public async Task<ActionResult> ComprarFinal(tb_cliente cliente) { String listAsi = ""; decimal monto = 0; int item = 1; String nombre_peli; String hora_ini ; String nom_sala; int n = 0; using (var scope = new TransactionScope(TransactionScopeOption.Required)) { //VARIABLES PARA MOSTRAR EN COMPROBANTE List<tb_entradas_venta> listaEntradas = new List<tb_entradas_venta>(); List<tb_venta_deta> listaAsientos = new List<tb_venta_deta>(); //REGISTRANDO CLIENTE DatosVentaDTO datosVenta = (DatosVentaDTO)Session["datosVenta"]; tb_cliente cli = db.Cliente.Where(s => s.correo_cli == cliente.correo_cli).FirstOrDefault(); int id_cli = -1; if (cli == null) { db.Cliente.Add(cliente); db.SaveChanges(); } else { id_cli = cli.id_cliente; } tb_venta venta = new tb_venta(); venta.id_horario_funcion = datosVenta.id_horario_funcion; venta.nom_sala = datosVenta.nom_sala; if (cli == null) { venta.id_cliente = cliente.id_cliente; } else { venta.id_cliente = id_cli; } venta.fecha_registro = DateTime.Now; foreach (var reg1 in datosVenta.listaEntradas) { tb_entradas_venta ev1 = new tb_entradas_venta(); ev1.subtotal = reg1.cantidad * reg1.precio_uni; monto = monto + ev1.subtotal; } venta.monto_total = monto; db.Venta.Add(venta); db.SaveChanges(); // REGISTRANDO ASIENTOS COMPRADOS foreach (var reg in datosVenta.listaAsientos) { tb_venta_deta vd = new tb_venta_deta(); vd.id_venta = venta.id_venta; vd.item = item; vd.asiento = reg.numeroAsiento; listAsi = listAsi + vd.asiento + ","; db.DetalleVenta.Add(vd); listaAsientos.Add(vd); item = item + 1; } db.SaveChanges(); //REGISTRANDO ENTRADAS COMPRADAS foreach (var reg in datosVenta.listaEntradas) { tb_entradas_venta ev = new tb_entradas_venta(); ev.id_entrada = reg.id_tipo; ev.id_venta = venta.id_venta; ev.cantidad = reg.cantidad; ev.precio = reg.precio_uni; ev.subtotal = reg.cantidad * reg.precio_uni; db.DetalleEntradasVenta.Add(ev); listaEntradas.Add(ev); } foreach (var ent in listaEntradas) { ent.Entrada = db.TipoEntrada.Where(x => x.id_entrada == ent.id_entrada).FirstOrDefault(); } tb_horario_funcion hora_fun = db.HorariosFuncion.Where(s => s.id_horario_funcion == datosVenta.id_horario_funcion).FirstOrDefault(); tb_funcion func = db.Funcion.Where(s => s.cod_funcion == hora_fun.cod_funcion).FirstOrDefault(); tb_peliculas pelicula = db.Peliculas.Where(s => s.cod_peli == func.cod_peli).FirstOrDefault(); nombre_peli=pelicula.nombre_peli; hora_ini=hora_fun.hora_inicio; nom_sala=venta.nom_sala; db.SaveChanges(); TempData["horarioFuncion"] = db.HorariosFuncion.Where(x => x.id_horario_funcion == datosVenta.id_horario_funcion).FirstOrDefault(); TempData["listaEntradas"] = listaEntradas; TempData["listaAsientos"] = listaAsientos; TempData["venta"] = venta; Session["datosVenta"] = null; scope.Complete(); } if (ModelState.IsValid) { String body = "</p><p>Usted a adquirido lo siguiente: </p>" + "<div>" + "Nombre de la Pelicula : " + nombre_peli + "</p><br/>" + "Hora de Inicio : " + hora_ini + "</p><br/>" + "Nombre de la Sala : " + nom_sala + "</p><br/>" + "Total de entradas adquiridas : " + item + "</p><br/>" + "Asientos comprados para la funcion : " + listAsi + "</p><br/>" + "Total de la Compra : s/." + monto + "</p><br/>" + "<p>Muchas gracias por su compra, " + cliente.nombre_cli + " (" + cliente.correo_cli + ")" + "</div>"; var message = new MailMessage(); message.To.Add(new MailAddress(cliente.correo_cli)); message.From = new MailAddress("*****@*****.**"); message.Subject = "Compra de Entradas para Cine - YOTEVEO"; message.Body = body; message.IsBodyHtml = true; using (var smtp = new SmtpClient()) { var credential = new NetworkCredential { UserName = "******", Password = "******" }; smtp.Credentials = credential; smtp.Host = "smtpout.secureserver.net"; await smtp.SendMailAsync(message); } } Session.Clear(); return RedirectToAction("Comprobante"); }
public ActionResult ComprarFinal() { tb_cliente cliente = new tb_cliente(); return View(cliente); }