PageRenderTime 42ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/View/informe_cobertura.aspx.cs

https://gitlab.com/fcupen/CLIENT-MANAGEMENT
C# | 363 lines | 287 code | 41 blank | 35 comment | 22 complexity | 347da747e94d137eccaf82bcfbbda529 MD5 | raw file
  1. using Clients_Management.Controller;
  2. using Clients_Management.Model;
  3. using iTextSharp.text;
  4. using iTextSharp.text.html.simpleparser;
  5. using iTextSharp.text.pdf;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Web;
  12. using System.Web.UI;
  13. using System.Web.UI.WebControls;
  14. namespace Clients_Management.View
  15. {
  16. public partial class informe_cobertura : System.Web.UI.Page
  17. {
  18. protected void Page_Load(object sender, EventArgs e)
  19. {
  20. mVendedor _vendedor = null;
  21. if (Session["vendedor"] != null)
  22. {
  23. _vendedor = (mVendedor)Session["vendedor"];
  24. }
  25. else
  26. {
  27. Response.Redirect("~/login.aspx");
  28. }
  29. if (!Page.IsPostBack)
  30. {
  31. if (_vendedor != null)
  32. lblNombre.Text = "Hola " + _vendedor.nombre.ToString();
  33. ddlMes.SelectedIndex = DateTime.Now.Month - 1;
  34. btnSalvar_Click(null,null);
  35. //PopularClientes();
  36. lblData.Text = DateTime.Now.ToString("dd/MM/yyyy");
  37. }
  38. }
  39. //private void PopularClientes()
  40. //{
  41. // cClientes engineClientes = new cClientes();
  42. // mVendedor _vendedor = (mVendedor)Session["vendedor"];
  43. // if (engineClientes.PopularGridPorVendedor(_vendedor.id) != null)
  44. // {
  45. // ddlClientes.DataSource = engineClientes.PopularGridPorVendedor(_vendedor.id).Tables[0];
  46. // ddlClientes.DataValueField = "Id";
  47. // ddlClientes.DataTextField = "Razon Social";
  48. // ddlClientes.DataBind();
  49. // }
  50. // else
  51. // {
  52. // Alert.Show("Não há clientes");
  53. // }
  54. //}
  55. protected void btnSalvar_Click(object sender, EventArgs e)
  56. {
  57. string mesescrito = ddlMes.Text;
  58. cParametrosCartaGantt engineParametrosCartaGantt = new cParametrosCartaGantt();
  59. cInformediario engineInformediario = new cInformediario();
  60. cClientes engineClientes = new cClientes();
  61. mVendedor _vendedor = (mVendedor)Session["vendedor"];
  62. DataSet dsClientes = new DataSet();
  63. DataSet dsCalculos;
  64. DataSet ds= engineParametrosCartaGantt.PopularGridAnoMesOrdenado(ddlAno.Text, mesescrito);
  65. int[] totais_dias = new int[ds.Tables[0].Rows.Count +1];
  66. DataTable dtNovo = new DataTable("Dados");
  67. dtNovo.Columns.Add("Dia");//0
  68. int indice = 1;
  69. foreach (DataRow linha in ds.Tables[0].Rows)
  70. {
  71. DataColumn dc = new DataColumn();
  72. dc.Caption = linha["dia"].ToString();
  73. dc.ColumnName = linha["dia"].ToString();
  74. int space=1;
  75. string nome = linha["dia"].ToString();
  76. while(dtNovo.Columns.Contains(nome))
  77. {
  78. nome = linha["dia"].ToString() + new string(' ', space);
  79. dc.ColumnName = nome;
  80. space++;
  81. }
  82. dc.DataType = System.Type.GetType("System.String");
  83. dtNovo.Columns.Add(dc);
  84. indice++;
  85. }
  86. dtNovo.Columns.Add(" ");
  87. DataRow dr;
  88. dr = dtNovo.NewRow();
  89. dr[0] = "Fecha";
  90. int contador = 1;
  91. foreach (DataRow linha in ds.Tables[0].Rows)
  92. {
  93. dr[contador]=linha["fecha"].ToString();
  94. totais_dias[contador-1] = 0;
  95. contador++;
  96. }
  97. totais_dias[contador - 1] = 0;
  98. dr[contador] = "Total";
  99. dtNovo.Rows.Add(dr);
  100. //Contacto Abortado
  101. dr = dtNovo.NewRow();
  102. dr[0] = "Contacto Abortado";
  103. contador = 1;
  104. int total_abortado = 0;
  105. int abortados=0;
  106. foreach (DataRow linha in ds.Tables[0].Rows)
  107. {
  108. dsCalculos = new DataSet();
  109. dsCalculos = engineInformediario.RetornarVisitasPorStatusSemOtroPorVendedor(ddlAno.Text, Convert.ToInt32(ddlMes.SelectedIndex+1).ToString(), linha["fecha"].ToString(), "0",_vendedor.id.ToString());
  110. if (dsCalculos != null)
  111. abortados = dsCalculos.Tables[0].Rows.Count;
  112. else
  113. abortados=0;
  114. dr[contador]=abortados;
  115. total_abortado += abortados;
  116. //totais_dias[contador-1] += abortados;
  117. contador++;
  118. }
  119. //totais_dias[contador-1] += abortados;
  120. dr[contador] = abortados.ToString();
  121. dtNovo.Rows.Add(dr);
  122. //Contacto no Planificado
  123. dr = dtNovo.NewRow();
  124. dr[0] = "Contacto no Planificado";
  125. contador = 1;
  126. int total_noplanificado = 0;
  127. int noplanificado = 0;
  128. foreach (DataRow linha in ds.Tables[0].Rows)
  129. {
  130. dsCalculos = new DataSet();
  131. dsCalculos = engineInformediario.RetornarVisitasPorStatusSemOtroPorVendedor(ddlAno.Text, Convert.ToInt32(ddlMes.SelectedIndex + 1).ToString(), linha["fecha"].ToString(), "1", _vendedor.id.ToString());
  132. if (dsCalculos != null)
  133. noplanificado = dsCalculos.Tables[0].Rows.Count;
  134. else
  135. noplanificado = 0;
  136. dr[contador] = noplanificado;
  137. total_noplanificado += noplanificado;
  138. totais_dias[contador-1] += noplanificado;
  139. contador++;
  140. }
  141. totais_dias[contador-1] += noplanificado;
  142. dr[contador] = total_noplanificado.ToString();
  143. dtNovo.Rows.Add(dr);
  144. //Contacto Telefónico
  145. dr = dtNovo.NewRow();
  146. dr[0] = "Contacto Telefónico";
  147. contador = 1;
  148. int total_telefonico = 0;
  149. int telefonico = 0;
  150. foreach (DataRow linha in ds.Tables[0].Rows)
  151. {
  152. dsCalculos = new DataSet();
  153. dsCalculos = engineInformediario.RetornarVisitasPorStatusSemOtroPorVendedor(ddlAno.Text, Convert.ToInt32(ddlMes.SelectedIndex + 1).ToString(), linha["fecha"].ToString(), "2", _vendedor.id.ToString());
  154. if (dsCalculos != null)
  155. telefonico = dsCalculos.Tables[0].Rows.Count;
  156. else
  157. telefonico = 0;
  158. dr[contador] = telefonico;
  159. total_telefonico += telefonico;
  160. // totais_dias[contador-1] += telefonico;
  161. contador++;
  162. }
  163. //totais_dias[contador-1] += telefonico;
  164. dr[contador] = total_telefonico.ToString();
  165. dtNovo.Rows.Add(dr);
  166. //Contacto Efectivo
  167. dr = dtNovo.NewRow();
  168. dr[0] = "Contacto Efectivo";
  169. contador = 1;
  170. int total_efectivo = 0;
  171. int efectivo = 0;
  172. foreach (DataRow linha in ds.Tables[0].Rows)
  173. {
  174. dsCalculos = new DataSet();
  175. dsCalculos = engineInformediario.RetornarVisitasPorStatusSemOtroPorVendedor(ddlAno.Text, Convert.ToInt32(ddlMes.SelectedIndex + 1).ToString(), linha["fecha"].ToString(), "3", _vendedor.id.ToString());
  176. if (dsCalculos != null)
  177. efectivo = dsCalculos.Tables[0].Rows.Count;
  178. else
  179. efectivo = 0;
  180. dr[contador] = efectivo;
  181. total_efectivo += efectivo;
  182. totais_dias[contador-1] += efectivo;
  183. contador++;
  184. }
  185. totais_dias[contador-1] += efectivo;
  186. dr[contador] = total_efectivo.ToString();
  187. dtNovo.Rows.Add(dr);
  188. //Follow up
  189. dr = dtNovo.NewRow();
  190. dr[0] = "Contacto Follow up";
  191. contador = 1;
  192. int total_followup = 0;
  193. int followup = 0;
  194. foreach (DataRow linha in ds.Tables[0].Rows)
  195. {
  196. dsCalculos = new DataSet();
  197. dsCalculos = engineInformediario.RetornarVisitasPorStatusSemOtroPorVendedor(ddlAno.Text, Convert.ToInt32(ddlMes.SelectedIndex + 1).ToString(), linha["fecha"].ToString(), "4", _vendedor.id.ToString());
  198. if (dsCalculos != null)
  199. followup = dsCalculos.Tables[0].Rows.Count;
  200. else
  201. followup = 0;
  202. dr[contador] = followup;
  203. total_followup += followup;
  204. //totais_dias[contador-1] += followup;
  205. contador++;
  206. }
  207. //totais_dias[contador-1] += followup;
  208. dr[contador] = total_followup.ToString();
  209. dtNovo.Rows.Add(dr);
  210. //total
  211. dr = dtNovo.NewRow();
  212. dr[0] = "Total";
  213. contador = 1;
  214. foreach (DataRow linha in ds.Tables[0].Rows)
  215. {
  216. dr[contador] = totais_dias[contador - 1].ToString();
  217. contador++;
  218. }
  219. totais_dias[contador - 1] = total_noplanificado+total_efectivo;
  220. dr[contador] = totais_dias[contador-1].ToString();
  221. dtNovo.Rows.Add(dr);
  222. gdvDados.DataSource = dtNovo;
  223. gdvDados.DataBind();
  224. double dias_uteis = 0;
  225. double dias_uteis_atuais = 0;
  226. List<mParametrosCartaGantt> ListaParametroCartaGantt = null; ;
  227. cParametrosDiversos engineParametrosDiversos = new cParametrosDiversos();
  228. mParametrosDiversos _paramDiv = new mParametrosDiversos();
  229. for (int i = 0; i < 31; i++)
  230. {
  231. ListaParametroCartaGantt = engineParametrosCartaGantt.RetornarParametrosCartaGantt(DateTime.Now.Year.ToString(), (ddlMes.SelectedIndex + 1).ToString(), (i + 1).ToString());
  232. if (ListaParametroCartaGantt != null)
  233. {
  234. if (ListaParametroCartaGantt.Count > 0)
  235. {
  236. dias_uteis++;
  237. if (i < (DateTime.Now.Day - 1))
  238. {
  239. dias_uteis_atuais++;
  240. }
  241. }
  242. }
  243. }
  244. double promovida = totais_dias[contador - 1] / dias_uteis_atuais;
  245. //double promovida = total_noplanificado + total_efectivo;
  246. //promovida = promovida / ds.Tables[0].Rows.Count;
  247. lblPromovida.Text = "PROMVDIA: " + promovida.ToString("N2");
  248. lblTitulo.Text = _vendedor.nombre + " - " + mesescrito + " - " +ddlAno.Text;
  249. }
  250. protected void Button2_Click(object sender, EventArgs e)
  251. {
  252. Response.Clear();
  253. Response.Buffer = true;
  254. Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
  255. Response.Charset = "";
  256. Response.ContentType = "application/vnd.ms-excel";
  257. using (StringWriter sw = new StringWriter())
  258. {
  259. HtmlTextWriter hw = new HtmlTextWriter(sw);
  260. //To Export all pages
  261. gdvDados.AllowPaging = false;
  262. btnSalvar_Click(null, null);
  263. gdvDados.HeaderRow.BackColor = System.Drawing.Color.White;
  264. foreach (TableCell cell in gdvDados.HeaderRow.Cells)
  265. {
  266. cell.BackColor = gdvDados.HeaderStyle.BackColor;
  267. }
  268. foreach (GridViewRow row in gdvDados.Rows)
  269. {
  270. row.BackColor = System.Drawing.Color.White;
  271. foreach (TableCell cell in row.Cells)
  272. {
  273. if (row.RowIndex % 2 == 0)
  274. {
  275. cell.BackColor = gdvDados.AlternatingRowStyle.BackColor;
  276. }
  277. else
  278. {
  279. cell.BackColor = gdvDados.RowStyle.BackColor;
  280. }
  281. cell.CssClass = "textmode";
  282. }
  283. }
  284. gdvDados.RenderControl(hw);
  285. //style to format numbers to string
  286. string style = @"<style> .textmode { } </style>";
  287. Response.Write(style);
  288. Response.Output.Write(sw.ToString());
  289. Response.Flush();
  290. Response.End();
  291. }
  292. }
  293. protected void Button3_Click(object sender, EventArgs e)
  294. {
  295. //salvando a cópia local
  296. string filename = "informe.pdf";
  297. Response.ContentType = "application/pdf";
  298. Response.AddHeader("content-disposition", "attachment;filename=" + filename);
  299. Response.Cache.SetCacheability(HttpCacheability.NoCache);
  300. StringWriter sw = new StringWriter();
  301. HtmlTextWriter hw = new HtmlTextWriter(sw);
  302. gdvDados.RenderControl(hw);
  303. StringReader sr = new StringReader(sw.ToString());
  304. Document pdfDoc = new Document(PageSize.A4, 8f, 8f, 8f, 8f);
  305. HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
  306. var output = new FileStream(Server.MapPath("~/pdf") + "//" + filename, FileMode.Create);
  307. PdfWriter.GetInstance(pdfDoc, output);
  308. PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
  309. pdfDoc.Open();
  310. htmlparser.Parse(sr);
  311. pdfDoc.Close();
  312. Response.Write(pdfDoc);
  313. Response.End();
  314. gdvDados.AllowPaging = true;
  315. gdvDados.DataBind();
  316. }
  317. public override void VerifyRenderingInServerForm(Control control)
  318. {
  319. /* Verifies that the control is rendered */
  320. }
  321. }
  322. }