public async Task <ActionResult> Cerrar([Bind(Include = "TicketId,Comentario")] CierreViewModel cierre) { ApplicationUser user = await UserManager.FindByNameAsync(User.Identity.Name); cierre.TecnicoId = user.Id; ModelState.Clear(); if (TryValidateModel(cierre)) { await _ticketService.Cierre(cierre); return(RedirectToAction("Asignados", "Tecnico")); } return(View(cierre)); }
public async Task <ActionResult> Cerrar(int id) { var ticket = _ticketService.GetById(id); var user = await UserManager.FindByNameAsync(User.Identity.Name); if ((ticket == null || ticket.Estado != Estado.Asignado) && user.Id != ticket.TecnicoId) { return(HttpNotFound()); } CierreViewModel cierre = new CierreViewModel { TicketID = ticket.Id, Titulo = ticket.Titulo }; return(View(cierre)); }
public async Task Cierre(CierreViewModel cierreViewModel) { var ticketCerrado = await GetTicketAsync(cierreViewModel.TicketID); if (ticketCerrado != null) { Cierre cierre = new Cierre { ComentarioCierre = cierreViewModel.Comentario, TecnicoId = cierreViewModel.TecnicoId, TicketID = ticketCerrado.Id }; context.Cierres.Add(cierre); ticketCerrado.Estado = Estado.Completado; await context.SaveChangesAsync(); } }
public Cierre(CierreViewModel cierre) { InitializeComponent(); titulo_reporte.Text = "Cierre " + cierre.Fecha.ToShortDateString(); efectivoInicial.Text = String.Format("{0:C}", cierre.EfectivoAnterior); ventas.Text = String.Format("{0:C}", cierre.Ventas); barVentas.Text = String.Format("{0:C}", cierre.CentrosDeCosto.SingleOrDefault(d => d.Nombre == "Bar").Importe); restaurantVentas.Text = String.Format("{0:C}", cierre.CentrosDeCosto.SingleOrDefault(d => d.Nombre == "Restaurant").Importe); depositos.Text = String.Format("{0:C}", cierre.Depositos); extracciones.Text = String.Format("{0:C}", cierre.Extracciones); extraccionCierre.Text = String.Format("{0:C}", cierre.ExtraccionCierre); pagoTrab.Text = String.Format("{0:C}", cierre.PagoTrabajadores); efectivoCaja.Text = String.Format("{0:C}", 100); ventasTotales.Text = String.Format("{0:C}", cierre.Ventas); pagoPorFactura.Text = String.Format("{0:C}", cierre.VentasPorFactura); excentasPorciento.Text = String.Format("{0:C}", cierre.VentasSinPorciento); ventasAlCosto.Text = String.Format("{0:C}", cierre.VentasAlCosto); calculaPorciento.Text = String.Format("{0:C}", cierre.SeLeCalculaPorciento); var porCiento = cierre.Porciento; porciento.Text = String.Format("{0:C}", porCiento); propina.Text = String.Format("{0:C}", cierre.Propinas); totalPropinaPorciento.Text = String.Format("{0:C}", porCiento + cierre.Propinas); var cuc = cierre.Desgloce.Where(d => d.DenominacionDeMoneda.Moneda.Sigla == "CUC") .Sum(d => d.Cantidad * d.DenominacionDeMoneda.Valor); var cup = cierre.Desgloce.Where(d => d.DenominacionDeMoneda.Moneda.Sigla == "CUP") .Sum(d => d.Cantidad * d.DenominacionDeMoneda.Valor); CUCReport.DataSource = cierre.Desgloce.Where(d => d.DenominacionDeMoneda.Moneda.Sigla == "CUC").Select(d => new { Valor = d.DenominacionDeMoneda.Valor, Cantidad = d.Cantidad, Importe = d.Cantidad * d.DenominacionDeMoneda.Valor }).OrderByDescending(d => d.Valor); this.denominacionCuc.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Valor") }); this.cantidadCuc.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Cantidad") }); this.valorCuc.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Importe", "{0:C}") }); totalCuc.Text = String.Format("{0:C}", cuc); CUPReport.DataSource = cierre.Desgloce.Where(d => d.DenominacionDeMoneda.Moneda.Sigla == "CUP").Select(d => new { Valor = d.DenominacionDeMoneda.Valor, Cantidad = d.Cantidad, Importe = d.Cantidad * d.DenominacionDeMoneda.Valor }).OrderByDescending(d => d.Valor); this.denominacionCup.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Valor") }); this.cantidadCup.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Cantidad") }); this.valorCup.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] { new DevExpress.XtraReports.UI.XRBinding("Text", null, "Importe", "{0:C}") }); totalCup.Text = String.Format("{0:C}", cup); cupEnCucTotal.Text = String.Format("{0:C}", cup / 25); totalConvertidoCuc.Text = String.Format("{0:C}", cuc + (cup / 25)); }
public CierreViewModel VerResumen(int id) { var dia = _periodoContableService.BuscarDiaContable(id); var cierre = _db.Set <CierreDeCaja>().SingleOrDefault(c => c.DiaContableId == id); var porcientos = _db.Set <PorcientoMenu>().ToList(); var totalVentas = 0m; var ventasSinPorciento = 0m; var ventasAlCosto = 0m; var ventasPorFacturas = 0m; var centrosDeCosto = new List <ResumenCentroCosto>(); if (_db.Set <Venta>().Any(v => v.DiaContableId == dia.Id && (v.EstadoDeVenta == EstadoDeVenta.PagadaEnEfectivo || v.EstadoDeVenta == EstadoDeVenta.PagadaPorTarjeta || v.EstadoDeVenta == EstadoDeVenta.PagadaPorFactura))) { var ventas = _db.Set <Venta>() .Where( v => v.DiaContableId == dia.Id && (v.EstadoDeVenta == EstadoDeVenta.PagadaEnEfectivo || v.EstadoDeVenta == EstadoDeVenta.PagadaPorTarjeta || v.EstadoDeVenta == EstadoDeVenta.PagadaPorFactura)).ToList(); totalVentas = ventas.Where(v => v.EstadoDeVenta == EstadoDeVenta.PagadaEnEfectivo || v.EstadoDeVenta == EstadoDeVenta.PagadaPorTarjeta).Sum(v => v.Importe); ventasPorFacturas = ventas.Where(v => v.EstadoDeVenta == EstadoDeVenta.PagadaPorFactura).Sum(v => v.Importe); ventasSinPorciento = ventas.Sum( v => v.Elaboraciones.Where( e => porcientos.Any(p => p.ElaboracioId == e.ElaboracionId && !p.SeCalcula) && e.Venta.Observaciones != "Venta al costo") .Sum(s => s.ImporteTotal)); ventasAlCosto = ventas.Where(v => v.Observaciones == "Venta al costo") .Sum( v => v.Importe); centrosDeCosto = ventas.Where(v => v.EstadoDeVenta == EstadoDeVenta.PagadaEnEfectivo || v.EstadoDeVenta == EstadoDeVenta.PagadaPorTarjeta).SelectMany(vw => vw.Elaboraciones.GroupBy(e => e.Elaboracion.CentroDeCosto).Select(v => new ResumenCentroCosto() { Nombre = v.Key.Nombre, Importe = v.Sum(ve => ve.ImporteTotal) })).GroupBy(e => e.Nombre).Select(e => new ResumenCentroCosto() { Nombre = e.Key, Importe = e.Sum(s => s.Importe) }).ToList(); } var extracciones = _cuentasServices.GetMovimientosDeCuenta("Caja") .Where(m => m.Asiento.DiaContableId == dia.Id && (m.Asiento.Detalle.StartsWith("Extracción") || m.Asiento.Detalle.StartsWith("Pago") || m.Asiento.Detalle.StartsWith("Compra"))).Sum(m => m.Importe); var extraccionCierre = _cuentasServices.GetMovimientosDeCuenta("Caja") .Where(m => m.Asiento.DiaContableId == dia.Id && (m.Asiento.Detalle.StartsWith("Cierre"))).Sum(m => m.Importe); var pagoTrabajadores = _cuentasServices.GetMovimientosDeCuenta("Caja") .Where(m => m.Asiento.DiaContableId == dia.Id && (m.Asiento.Detalle.StartsWith("Trabajadores"))).Sum(m => m.Importe); var depositos = _cuentasServices.GetMovimientosDeCuenta("Caja") .Where(m => m.Asiento.DiaContableId == dia.Id && m.TipoDeOperacion == TipoDeOperacion.Debito && m.Asiento.Detalle.StartsWith("Deposito")).Sum(m => m.Importe); var propinas = _db.Set <Propina>().Any(v => v.Venta.DiaContableId == dia.Id) ? _db.Set <Propina>().Where(v => v.Venta.DiaContableId == dia.Id).Sum(c => c.Importe) : 0; var resumen = new CierreViewModel() { Fecha = dia.Fecha, EfectivoAnterior = 100, Ventas = totalVentas, VentasPorFactura = ventasPorFacturas, VentasSinPorciento = ventasSinPorciento, VentasAlCosto = ventasAlCosto, Depositos = depositos, Extracciones = extracciones, Propinas = propinas, ExtraccionCierre = extraccionCierre, PagoTrabajadores = pagoTrabajadores, Desgloce = cierre != null?cierre.Desglose.ToList() : null, CentrosDeCosto = centrosDeCosto }; return(resumen); }
public HttpResponseMessage Put([FromBody] CierreViewModel gastos) { G.AbrirConexionAPP(out db); var t = db.Database.BeginTransaction(); try { // G.GuardarTxt("BitLlegada.txt", gastos.ToString()); if (db.EncCierre.Where(a => a.idCierre == gastos.EncCierre.idCierre).FirstOrDefault() != null) { var Cierre = db.EncCierre.Where(a => a.idCierre == gastos.EncCierre.idCierre).FirstOrDefault(); db.Entry(Cierre).State = EntityState.Modified; Cierre.Periodo = Cierre.Periodo;//gastos.EncCierre.Periodo; Cierre.FechaInicial = gastos.EncCierre.FechaInicial; Cierre.FechaFinal = gastos.EncCierre.FechaFinal; Cierre.idLogin = gastos.EncCierre.idLogin; Cierre.SubTotal = gastos.EncCierre.SubTotal; Cierre.Total = gastos.EncCierre.Total; Cierre.CantidadRegistros = 0; Cierre.Descuento = gastos.EncCierre.Descuento; Cierre.FechaCierre = Cierre.FechaCierre;//DateTime.Now; Cierre.Impuestos = gastos.EncCierre.Impuestos; Cierre.Impuesto1 = gastos.EncCierre.Impuesto1; Cierre.Impuesto2 = gastos.EncCierre.Impuesto2; Cierre.Impuesto4 = gastos.EncCierre.Impuesto4; Cierre.Impuesto8 = gastos.EncCierre.Impuesto8; Cierre.Impuesto13 = gastos.EncCierre.Impuesto13; var login = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); Cierre.idLoginAceptacion = login.idLoginAceptacion; Cierre.Estado = gastos.EncCierre.Estado; Cierre.Observacion = Cierre.Observacion; Cierre.CodMoneda = gastos.EncCierre.CodMoneda; Cierre.TotalOtrosCargos = gastos.EncCierre.TotalOtrosCargos; Cierre.Observacion = gastos.EncCierre.Observacion; db.SaveChanges(); var FecInicial = Cierre.FechaInicial.AddMonths(-1); var FechaFinal = Cierre.FechaFinal.AddMonths(1); var Facturas = db.EncCompras.Where(a => a.FecFactura >= FecInicial && a.FecFactura <= FechaFinal).ToList(); var Logins = db.Login.ToList(); var Normas = db.NormasReparto.ToList(); var Detalle = db.DetCierre.Where(a => a.idCierre == Cierre.idCierre).ToList(); foreach (var item in Detalle) { var Factura = Facturas.Where(a => a.id == item.idFactura).FirstOrDefault(); db.Entry(Factura).State = EntityState.Modified; Factura.idLoginAsignado = 0; Factura.FecAsignado = null; Factura.Comentario = ""; Factura.idNormaReparto = 0; Factura.idCierre = 0; db.DetCierre.Remove(item); db.SaveChanges(); } int i = 1; foreach (var item in gastos.DetCierre) { DetCierre det = new DetCierre(); det.idCierre = Cierre.idCierre; det.NumLinea = i; det.idFactura = item.idFactura; det.Comentario = item.Comentario; i++; db.DetCierre.Add(det); var Factura = Facturas.Where(a => a.id == item.idFactura).FirstOrDefault(); db.Entry(Factura).State = EntityState.Modified; Factura.idLoginAsignado = Cierre.idLogin; Factura.FecAsignado = DateTime.Now; if (Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault() == null) { throw new Exception("Este usuario no contiene una norma de reparto asignada"); } Factura.idNormaReparto = Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault().id; Factura.idCierre = det.idCierre; Factura.idTipoGasto = item.idTipoGasto; Factura.Comentario = item.Comentario; db.SaveChanges(); } db.SaveChanges(); db.Entry(Cierre).State = EntityState.Modified; Cierre.CantidadRegistros = i - 1; db.SaveChanges(); if (gastos.EncCierre.Estado == "E") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var Login = db.Login.Where(a => a.id == login.idLoginAceptacion).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); var html = "<h3 style='text-align: center; '><strong>Liquidación pendiente de revisión</strong></h3>"; html += "<p style='text-align: justify; '>Se ha recibido una nueva liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para aceptar o denegar dicha liquidación.</p>"; emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Liquidación pendiente de revisión", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } if (gastos.EncCierre.Estado == "A" || gastos.EncCierre.Estado == "R") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var AR = gastos.EncCierre.Estado; var Login = db.Login.Where(a => a.id == login.id).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); //ó -> Tilde var html = ""; if (AR == "A") { var LoginAceptacion = db.Login.Where(a => a.id == Cierre.idLoginAceptacion).FirstOrDefault(); html = "<h3 style='text-align: center; '><strong>Liquidación Aprobada</strong></h3>"; html += "<p style='text-align: justify; '>Se ha aprobado tú liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "<li style='text-align: justify; '><strong>Usuario Aprobador</strong>: " + LoginAceptacion == null ? "" : LoginAceptacion.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Comentarios de la Liquidación</strong>: " + Cierre.Observacion + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para ver más detalles de dicha liquidación.</p>"; } else { var LoginAceptacion = db.Login.Where(a => a.id == Cierre.idLoginAceptacion).FirstOrDefault(); html = "<h3 style='text-align: center; '><strong>Liquidación Rechazada</strong></h3>"; html += "<p style='text-align: justify; '>Se ha rechazado tú liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "<li style='text-align: justify; '><strong>Usuario Aprobador</strong>: " + LoginAceptacion == null ? "" : LoginAceptacion.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Comentarios de la Liquidación</strong>: " + Cierre.Observacion + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para ver más detalles de dicha liquidación.</p>"; } emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Respuesta de la liquidación", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } t.Commit(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } else { throw new Exception("Este cierre no existe"); } } catch (Exception ex) { t.Rollback(); G.GuardarTxt("ErrorCierre" + DateTime.Now.Day + "" + DateTime.Now.Month + "" + DateTime.Now.Year + ".txt", ex.ToString()); BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = (string.IsNullOrEmpty(ex.InnerException.Message) ? ex.StackTrace : ex.InnerException.Message); be.Metodo = "Actualizacion de Cierre"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }
public HttpResponseMessage Post([FromBody] CierreViewModel gastos) { G.AbrirConexionAPP(out db); var t = db.Database.BeginTransaction(); try { var Candado = db.EncCierre.Where(a => a.Periodo.ToUpper().Contains(gastos.EncCierre.Periodo.ToUpper()) && a.Estado != "A" && a.CodMoneda == gastos.EncCierre.CodMoneda && a.FechaInicial <= gastos.EncCierre.FechaCierre && a.FechaFinal >= gastos.EncCierre.FechaCierre && a.idLogin == gastos.EncCierre.idLogin).FirstOrDefault(); if (Candado != null) { throw new Exception("Ya existe una liquidacion con la moneda " + gastos.EncCierre.CodMoneda + " en este periodo " + gastos.EncCierre.Periodo + " idlogin: "******"No se puede insertar una liquidacion con ninguna factura"); } var Cierre = new EncCierre(); Cierre.Periodo = gastos.EncCierre.Periodo; Cierre.FechaInicial = gastos.EncCierre.FechaInicial; Cierre.FechaFinal = gastos.EncCierre.FechaFinal; Cierre.idLogin = gastos.EncCierre.idLogin; Cierre.SubTotal = gastos.EncCierre.SubTotal; Cierre.Total = gastos.EncCierre.Total; Cierre.CantidadRegistros = 0; Cierre.Descuento = gastos.EncCierre.Descuento; Cierre.FechaCierre = DateTime.Now; Cierre.Impuestos = gastos.EncCierre.Impuestos; Cierre.Impuesto1 = gastos.EncCierre.Impuesto1; Cierre.Impuesto2 = gastos.EncCierre.Impuesto2; Cierre.Impuesto4 = gastos.EncCierre.Impuesto4; Cierre.Impuesto8 = gastos.EncCierre.Impuesto8; Cierre.Impuesto13 = gastos.EncCierre.Impuesto13; var login = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); Cierre.idLoginAceptacion = login.idLoginAceptacion; Cierre.Estado = gastos.EncCierre.Estado; Cierre.Observacion = ""; Cierre.CodMoneda = gastos.EncCierre.CodMoneda; Cierre.TotalOtrosCargos = gastos.EncCierre.TotalOtrosCargos; Cierre.ProcesadaSAP = false; Cierre.Observacion = gastos.EncCierre.Observacion; db.EncCierre.Add(Cierre); db.SaveChanges(); var FecIni = Cierre.FechaInicial.AddDays(-1); var FecFin = Cierre.FechaFinal.AddDays(1); var Facturas = db.EncCompras.Where(a => a.FecFactura >= FecIni && a.FecFactura <= FecFin).ToList(); var Logins = db.Login.ToList(); var Normas = db.NormasReparto.ToList(); int i = 1; foreach (var item in gastos.DetCierre) { DetCierre det = new DetCierre(); det.idCierre = Cierre.idCierre; det.NumLinea = i; det.idFactura = item.idFactura; det.Comentario = item.Comentario; i++; db.DetCierre.Add(det); var Factura = Facturas.Where(a => a.id == item.idFactura).FirstOrDefault(); if (Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault() == null) { throw new Exception("Este usuario " + login.Nombre + " no contiene una norma de reparto asignada"); } db.Entry(Factura).State = EntityState.Modified; Factura.idLoginAsignado = Cierre.idLogin; Factura.FecAsignado = DateTime.Now; Factura.idNormaReparto = Normas.Where(a => a.idLogin == Cierre.idLogin).FirstOrDefault().id; Factura.idCierre = det.idCierre; Factura.idTipoGasto = item.idTipoGasto; Factura.Comentario = item.Comentario; db.SaveChanges(); } db.SaveChanges(); db.Entry(Cierre).State = EntityState.Modified; Cierre.CantidadRegistros = i - 1; db.SaveChanges(); if (gastos.EncCierre.Estado == "E") { SendGridEmail.EmailSender emailsender = new SendGridEmail.EmailSender(); //var Roles = db.Roles.Where(a => a.NombreRol.ToUpper().Contains("APROBADOR")).FirstOrDefault(); var Login = db.Login.Where(a => a.id == login.idLoginAceptacion).FirstOrDefault(); var AsignadoCierre = db.Login.Where(a => a.id == Cierre.idLogin).FirstOrDefault(); var parametros = db.Parametros.FirstOrDefault(); var html = "<h3 style='text-align: center; '><strong>Liquidación pendiente de revisión</strong></h3>"; html += "<p style='text-align: justify; '>Se ha recibido una nueva liquidación de gastos, a continuación los detalles:</p>"; html += "<ul>"; html += "<li style = 'text-align: justify;' ><strong> ID Cierre </strong>: " + Cierre.idCierre + "</li>"; html += "<li style = 'text-align: justify;' ><strong> Nombre </strong>: " + AsignadoCierre.Nombre + "</li>"; html += "<li style='text-align: justify; '><strong>Periodo</strong>: " + Cierre.Periodo + "</li>"; html += "<li style='text-align: justify; '><strong>Cantidad de Facturas: </strong>" + Cierre.CantidadRegistros + "</li>"; html += "<li style='text-align: justify; '><strong>Total</strong>: " + decimal.Round(Cierre.Total.Value, 2) + "</li>"; html += "</ul><p></p> "; html += "<p>Favor revisar en la plataforma <a href='" + parametros.UrlSitioPublicado + "'>" + parametros.UrlSitioPublicado + "</a> para aceptar o denegar dicha liquidación.</p>"; emailsender.SendV2(Login.Email, parametros.RecepcionEmail, "", parametros.RecepcionEmail, "Liquidación", "Liquidación pendiente de revisión", html, parametros.RecepcionHostName, parametros.EnvioPort, parametros.RecepcionUseSSL.Value, parametros.RecepcionEmail, parametros.RecepcionPassword); } t.Commit(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { t.Rollback(); G.GuardarTxt("ErrorCierre" + DateTime.Now.Day + "" + DateTime.Now.Month + "" + DateTime.Now.Year + ".txt", ex.ToString()); BitacoraErrores be = new BitacoraErrores(); be.Descripcion = ex.Message; be.StackTrace = ex.StackTrace; be.Metodo = "Insercion de Cierre"; be.Fecha = DateTime.Now; db.BitacoraErrores.Add(be); db.SaveChanges(); G.CerrarConexionAPP(db); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)); } }