Exemplo n.º 1
0
        public async Task <IActionResult> Create(Certificado certificado)
        {
            if (certificado.ListaOrdenes == null)
            {
                ViewData["IdProductoFinal"] = new SelectList(await db.ProductoFinal.Select(x => new ProductoFinal {
                    ProductoFinalId = x.ProductoFinalId, Codigo = string.Format("{0} | {1}", x.Codigo, x.Descripcion)
                }).ToListAsync(), "ProductoFinalId", "Codigo");
                ViewData["OrdenesId"] = new SelectList(await CargarComboOrdenes(), "NumeroOrden", "NumeroOrden");
                ViewData["IdCliente"] = new SelectList(await db.Cliente.Select(x => new Cliente {
                    ClienteId = x.ClienteId, NombreCliente = x.NombreCliente
                }).ToListAsync(), "NombreCliente", "NombreCliente");
                this.TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.DebeSeleccionarOrdenes}";
                ModelState.AddModelError("ListaOrdenes", Mensaje.DebeSeleccionarOrdenes);
                return(View(certificado));
            }

            for (int i = 0; i < certificado.ListaOrdenes.Length; i++)
            {
                if (i == certificado.ListaOrdenes.Length - 1)
                {
                    certificado.NumeroOrden = certificado.NumeroOrden + certificado.ListaOrdenes[i];
                }
                else
                {
                    certificado.NumeroOrden = certificado.NumeroOrden + certificado.ListaOrdenes[i] + ";";
                }
            }



            if (certificado.Estado == 1)
            {
                var certificadoUpdate = await db.Certificado.Where(x => x.CertificadoId == certificado.CertificadoId).FirstOrDefaultAsync();

                certificadoUpdate.ProductoFinalId   = certificado.ProductoFinalId == 0 ? null : certificado.ProductoFinalId;
                certificadoUpdate.CodigoCertificado = certificado.CodigoCertificado;
                certificadoUpdate.FechaGeneracion   = certificado.FechaGeneracion;
                certificadoUpdate.NumeroOrden       = certificado.NumeroOrden;
                certificadoUpdate.NumeroGuia        = certificado.NumeroGuia;
                certificadoUpdate.Tipo               = certificado.Tipo;
                certificadoUpdate.OrdenVenta         = certificado.OrdenVenta;
                certificadoUpdate.PedidoVenta        = certificado.PedidoVenta;
                certificadoUpdate.Valor              = certificado.Valor;
                certificadoUpdate.Peso               = certificado.Peso;
                certificadoUpdate.VerMateriaPrima    = certificado.VerMateriaPrima;
                certificadoUpdate.ArchivoCargado     = false;
                certificadoUpdate.OrdenCliente       = certificado.OrdenCliente;
                certificadoUpdate.Referencia         = certificado.Referencia;
                certificadoUpdate.NumeroFactura      = certificado.NumeroFactura;
                certificadoUpdate.PartidaArancelaria = certificado.PartidaArancelaria;
                certificadoUpdate.Liberado           = certificado.Liberado;
                certificadoUpdate.NombreCliente      = certificado.NombreCliente;
                certificadoUpdate.OrdenFinal         = certificado.OrdenFinal;

                if (certificadoUpdate.ArchivoCargado == true)
                {
                    uploadFileService.DeleteFile(certificadoUpdate.FileUrl);
                    certificadoUpdate.FileUrl = "";
                }

                await db.SaveChangesAsync();
            }
            else
            {
                certificado.ProductoFinalId = certificado.ProductoFinalId == 0 ? null : certificado.ProductoFinalId;
                certificado.NombreCliente   = certificado.NombreCliente == "0" ? "" : certificado.NombreCliente;
                // certificado.Liberado = false;
                await db.Certificado.AddAsync(certificado);

                await db.SaveChangesAsync();

                certificado.CodigoCertificado = string.Format("{0}", certificado.CertificadoId);
                await db.SaveChangesAsync();
            }
            certificado.Estado             = 1;
            certificado.CumpleFechaOrdenes = true;
            if (certificado.Tipo == 1)
            {
                certificado.CumpleFechaOrdenes = certificado.Liberado == false ? await ValidarNumeroOrden(certificado.ListaOrdenes, certificado.FechaGeneracion.Date, certificado.CertificadoId) : true;
            }



            if (certificado.CumpleFechaOrdenes == false)
            {
                var listadoEmails        = new List <string>();
                var listaAdministradores = await userManager.GetUsersInRoleAsync(Perfiles.Administracion);


                foreach (var item in listaAdministradores)
                {
                    listadoEmails.Add(item.Email);
                }

                var cuerpo = emailSender.CuerpoCertificadoFueraDeFecha(User.Identity.Name, certificado);
                emailSender.SendEmailAsync(listadoEmails, Mensaje.AsuntoCorreo, cuerpo);
            }

            return(RedirectToAction("Finalizar", certificado));
        }