private void InitializarReclamaciones(ReclamacionesReportViewModel reclamacionesReport)
        {
            List <ReclamacionReportViewModel> reclamaciones = new List <ReclamacionReportViewModel>();

            db.Reclamacions
            .Include(q => q.Cliente)
            .Include(q => q.Empleado)
            .Include(q => q.Sucursal)
            .Include(q => q.Departamento)
            .Include(q => q.Tipo_Reclamacion)
            .Include(q => q.Estado_QR)
            .ToList().ForEach(
                q =>
            {
                ReclamacionReportViewModel tempReclamacion = new ReclamacionReportViewModel();
                tempReclamacion.Numero       = q.QRID.GetValueOrDefault();
                tempReclamacion.Fecha        = q.Fecha.GetValueOrDefault();
                tempReclamacion.Cliente      = q.Cliente?.Nombre + " " + q.Cliente?.Apellido;
                tempReclamacion.Departamento = q.Departamento?.Nombre;
                tempReclamacion.Sucursal     = q.Sucursal?.Nombre;
                tempReclamacion.Empleado     = q.Empleado?.Nombre + " " + q.Empleado?.Apellido;
                tempReclamacion.Estado       = q.Estado_QR?.Descripcion;
                tempReclamacion.Tipo         = q.Tipo_Reclamacion?.Descripcion;
                tempReclamacion.Comentario   = q.Comentario;

                reclamaciones.Add(tempReclamacion);
            }
                );
            reclamacionesReport.Reclamaciones = reclamaciones;
        }
        public ActionResult ExportReclamaciones()
        {
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            using (ExcelPackage Ep = new ExcelPackage())
            {
                ReclamacionesReportViewModel reclamacionesReport = InitializarReclamacionesReportViewModel();
                ExcelWorksheet Sheet = Ep.Workbook.Worksheets.Add("Report");
                Sheet.Cells["A1"].Value = "Número de reclamacion";
                Sheet.Cells["B1"].Value = "Fecha";
                Sheet.Cells["C1"].Value = "Cliente";
                Sheet.Cells["D1"].Value = "Departamento";
                Sheet.Cells["E1"].Value = "Sucursal";
                Sheet.Cells["F1"].Value = "Empleado";
                Sheet.Cells["G1"].Value = "Estado";
                Sheet.Cells["H1"].Value = "Tipo de reclamacion";
                Sheet.Cells["I1"].Value = "Comentario";
                int row = 2;
                foreach (var item in reclamacionesReport.Reclamaciones)
                {
                    Sheet.Cells[string.Format("A{0}", row)].Value = item.Numero;
                    Sheet.Cells[string.Format("B{0}", row)].Value = item.Fecha;
                    Sheet.Cells[string.Format("C{0}", row)].Value = item.Cliente;
                    Sheet.Cells[string.Format("D{0}", row)].Value = item.Departamento;
                    Sheet.Cells[string.Format("E{0}", row)].Value = item.Sucursal;
                    Sheet.Cells[string.Format("F{0}", row)].Value = item.Empleado;
                    Sheet.Cells[string.Format("G{0}", row)].Value = item.Estado;
                    Sheet.Cells[string.Format("H{0}", row)].Value = item.Tipo;
                    Sheet.Cells[string.Format("I{0}", row)].Value = item.Comentario;
                    row++;
                }

                row++;

                Sheet.Cells[string.Format("A{0}", row)].Value = "Estado";
                Sheet.Cells[string.Format("B{0}", row)].Value = "Cantidad";
                Sheet.Cells[string.Format("C{0}", row)].Value = "Porcentaje";

                foreach (var item in reclamacionesReport.Estados)
                {
                    Sheet.Cells[string.Format("A{0}", row)].Value = item.Estado;
                    Sheet.Cells[string.Format("B{0}", row)].Value = item.Cantidad;
                    Sheet.Cells[string.Format("C{0}", row)].Value = string.Format("{0}%", item.Porcentaje);
                    row++;
                }

                Sheet.Cells["A:AZ"].AutoFitColumns();
                var stream = new MemoryStream();
                Ep.SaveAs(stream);

                string fileName    = "ReclamacionesReport.xlsx";
                string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

                stream.Position = 0;
                return(File(stream, contentType, fileName));
            }
        }
        private ReclamacionesReportViewModel InitializarReclamacionesReportViewModel()
        {
            ReclamacionesReportViewModel reclamacionesReport = new ReclamacionesReportViewModel();

            InitializarReclamaciones(reclamacionesReport);

            InitializarEstadosReclamaciones(reclamacionesReport);

            return(reclamacionesReport);
        }
        private void InitializarEstadosReclamaciones(ReclamacionesReportViewModel reclamacionesReport)
        {
            int totalQR = db.Reclamacions.Count();
            List <EstadoViewModel> estados = new List <EstadoViewModel>();

            db.Estado_QRs.ToList().ForEach(
                e =>
            {
                EstadoViewModel tempEstado = new EstadoViewModel();
                tempEstado.Estado          = e.Descripcion;
                tempEstado.Cantidad        = db.Reclamacions.Count(q => q.Estado_QR_EstadoID == e.EstadoID);
                tempEstado.Porcentaje      = getPorcentaje((decimal)tempEstado.Cantidad, (decimal)totalQR);

                estados.Add(tempEstado);
            }
                );

            reclamacionesReport.Estados = estados;
        }
        public ActionResult Reclamaciones()
        {
            ReclamacionesReportViewModel reclamacionesReport = InitializarReclamacionesReportViewModel();

            return(View(reclamacionesReport));
        }