public async Task <ActionResult> RecargarSaldo(CuentasTelepeaje modelCuenta, string ReturnController) { try { db.Configuration.ValidateOnSaveEnabled = false; var FoundCuenta = await db.CuentasTelepeajes .Join(db.Clientes, cue => cue.ClienteId, cli => cli.Id, (cue, cli) => new { cue, cli }) .SingleOrDefaultAsync(x => x.cue.NumCuenta == modelCuenta.NumCuenta); if (FoundCuenta == null) { TempData["ECreate"] = $"La cuenta no existe."; return(RedirectToAction("Index", ReturnController)); } if (FoundCuenta.cli.StatusCliente == true) { if (FoundCuenta.cue.TypeCuenta == "Colectiva") { var UserId = User.Identity.GetUserId(); var lastCorteUser = await db.CortesCajeros .Where(x => x.IdCajero == UserId) .OrderByDescending(x => x.DateTApertura).FirstOrDefaultAsync(); if (lastCorteUser != null) { var Saldo = (double.Parse(FoundCuenta.cue.SaldoCuenta) / 100).ToString("F2"); var SaldoNuevo = (double.Parse(Saldo) + double.Parse(modelCuenta.SaldoARecargar, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," })); var SaldoSend = Math.Round(SaldoNuevo, 2).ToString("F2"); SaldoSend = SaldoSend.Replace(",", string.Empty); FoundCuenta.cue.SaldoCuenta = SaldoSend.Replace(".", string.Empty); if ((double.Parse(FoundCuenta.cue.SaldoCuenta, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }) / 100) >= 100) { if (FoundCuenta.cue.StatusCuenta == false) { FoundCuenta.cue.StatusCuenta = true; } List <Tags> tags = await db.Tags.Where(x => x.CuentaId == FoundCuenta.cue.Id).ToListAsync(); foreach (var item in tags) { if (item.StatusTag == false) { item.StatusTag = true; } item.SaldoTag = FoundCuenta.cue.SaldoCuenta; db.Tags.Attach(item); db.Entry(item).State = EntityState.Modified; } } var detalle = new OperacionesCajero { Concepto = "CUENTA RECARGA", DateTOperacion = DateTime.Now, Numero = FoundCuenta.cue.NumCuenta, Tipo = "CUENTA", TipoPago = "EFE", Monto = double.Parse(modelCuenta.SaldoARecargar, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }), CorteId = lastCorteUser.Id, NoReferencia = await methods.RandomNumReferencia(), }; db.OperacionesCajeros.Add(detalle); db.CuentasTelepeajes.Attach(FoundCuenta.cue); db.Entry(FoundCuenta.cue).State = EntityState.Modified; await db.SaveChangesAsync(); TempData["SCreate"] = $"Se recargó Q{modelCuenta.SaldoARecargar} a la cuenta: {FoundCuenta.cue.NumCuenta} con éxito."; return(RedirectToAction("Index", ReturnController)); } TempData["ECreate"] = $"¡Ups! ocurrio un error inesperado."; return(RedirectToAction("Index", ReturnController)); } TempData["ECreate"] = "La cuenta: " + modelCuenta.NumCuenta + " es individual o puede que este dada de baja."; return(RedirectToAction("Index", ReturnController)); } TempData["ECreate"] = "No se puede recargar saldo a la cuenta: " + modelCuenta.NumCuenta + " porque el cliente al que pertenece está dado de baja."; return(RedirectToAction("Index", "Clientes")); } catch (Exception ex) { TempData["ECreate"] = $"¡Ups! ocurrio un error inesperado, {ex.Message}"; return(RedirectToAction("Index", ReturnController)); } }
public async Task <ActionResult> DeleteTraspaso(TagsViewModel model) { try { db.Configuration.ValidateOnSaveEnabled = false; if (model.IdOldTag == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Tags tagOld = await db.Tags.FindAsync(model.IdOldTag); if (tagOld == null) { return(HttpNotFound()); } var cuenta = await db.CuentasTelepeajes.Join(db.Clientes, cue => cue.ClienteId, cli => cli.Id, (cue, cli) => new { cue, cli }) .Where(x => x.cue.Id == tagOld.CuentaId) .FirstOrDefaultAsync(); if (cuenta == null) { return(HttpNotFound()); } var UserId = User.Identity.GetUserId(); var lastCorteUser = await db.CortesCajeros .Where(x => x.IdCajero == UserId) .OrderByDescending(x => x.DateTApertura).ToListAsync(); if (lastCorteUser.Count > 0) { if (model.Checked == true) { var tagNew = new Tags { StatusResidente = false, StatusTag = true, DateTTag = DateTime.Now, IdCajero = User.Identity.GetUserId(), NumTag = model.NumNewTag, CobroTag = model.CobroTag, CuentaId = cuenta.cue.Id, }; var detalle = new OperacionesCajero { Concepto = "TAG TRASPASO", DateTOperacion = DateTime.Now, Numero = tagNew.NumTag, Tipo = "TAG", TipoPago = "TRA", CorteId = lastCorteUser.FirstOrDefault().Id, CobroTag = Convert.ToDouble(tagNew.CobroTag), NoReferencia = await methods.RandomNumReferencia(), }; switch (cuenta.cue.TypeCuenta) { case "Colectiva": tagNew.SaldoTag = cuenta.cue.SaldoCuenta; detalle.Monto = double.Parse(tagNew.SaldoTag); break; case "Individual": var SaldoSend = model.SaldoTag; SaldoSend = SaldoSend.Replace(",", string.Empty); tagNew.SaldoTag = SaldoSend.Replace(".", string.Empty); detalle.Monto = double.Parse(model.SaldoTag); break; default: break; } db.Tags.Add(tagNew); db.OperacionesCajeros.Add(detalle); } else { var detalle = new OperacionesCajero { Concepto = "TAG ELIMINADO", DateTOperacion = DateTime.Now, Numero = tagOld.NumTag, Tipo = "TAG", TipoPago = null, CorteId = lastCorteUser.FirstOrDefault().Id, CobroTag = null, Monto = null, NoReferencia = await methods.RandomNumReferencia(), }; db.OperacionesCajeros.Add(detalle); } var listNegra = new ListaNegra { Tipo = "TAG", Numero = tagOld.NumTag, Observacion = model.Observacion, Date = DateTime.Now, IdCajero = User.Identity.GetUserId(), Clase = cuenta.cue.TypeCuenta, NumCliente = cuenta.cli.NumCliente, NumCuenta = cuenta.cue.NumCuenta, }; switch (cuenta.cue.TypeCuenta) { case "Individual": listNegra.SaldoAnterior = double.Parse(model.SaldoTag); break; default: break; } db.ListaNegras.Add(listNegra); db.Tags.Remove(tagOld); await db.SaveChangesAsync(); TempData["SDelete"] = $"Se eliminó correctamente el tag: {tagOld.NumTag}."; return(RedirectToAction("Index", "Clientes")); } TempData["EDelete"] = $"¡Ups! ha ocurrido un error inesperado."; return(RedirectToAction("Index", "Clientes")); } catch (Exception ex) { throw; } }
public async Task <ActionResult> CreateAjax(CuentasTelepeaje cuentasTelepeaje) { try { //ViewBag.ClienteId = new SelectList(db.Clientes, "Id", "NumCliente", cuentasTelepeaje.ClienteId); db.Configuration.ValidateOnSaveEnabled = false; Clientes cliente = await db.Clientes.FindAsync(cuentasTelepeaje.ClienteId); if (cliente.StatusCliente == true) { var UserId = User.Identity.GetUserId(); var lastCorteUser = await db.CortesCajeros .Where(x => x.IdCajero == UserId) .OrderByDescending(x => x.DateTApertura).FirstOrDefaultAsync(); if (lastCorteUser != null) { if (cuentasTelepeaje.TypeCuenta == "Individual") { cuentasTelepeaje.SaldoCuenta = null; } cuentasTelepeaje.StatusCuenta = true; cuentasTelepeaje.StatusResidenteCuenta = false; cuentasTelepeaje.DateTCuenta = DateTime.Now; cuentasTelepeaje.IdCajero = User.Identity.GetUserId(); ModelState.Remove("NumCuenta"); ModelState.Remove("IdCajero"); ModelState.Remove("SaldoARecargar"); ModelState.Remove("ConfSaldoARecargar"); cuentasTelepeaje.NumCuenta = RandomNumCuenta(); if (ModelState.IsValid) { var query = await db.CuentasTelepeajes.Where(x => x.NumCuenta == cuentasTelepeaje.NumCuenta).ToListAsync(); if (query.Count != 0) { while (query.Count != 0) { cuentasTelepeaje.NumCuenta = RandomNumCuenta(); query = await db.CuentasTelepeajes.Where(x => x.NumCuenta == cuentasTelepeaje.NumCuenta).ToListAsync(); } } var detalle = new OperacionesCajero { Concepto = "CUENTA ACTIVADA", DateTOperacion = DateTime.Now, Numero = cuentasTelepeaje.NumCuenta, Tipo = "CUENTA", CorteId = lastCorteUser.Id, NoReferencia = await methods.RandomNumReferencia(), }; if (cuentasTelepeaje.TypeCuenta == "Colectiva") { detalle.TipoPago = "EFE"; detalle.Monto = double.Parse(cuentasTelepeaje.SaldoCuenta, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }); var SaldoSend = double.Parse(cuentasTelepeaje.SaldoCuenta, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }).ToString("F2"); SaldoSend = SaldoSend.Replace(",", string.Empty); cuentasTelepeaje.SaldoCuenta = SaldoSend.Replace(".", string.Empty); } db.OperacionesCajeros.Add(detalle); db.CuentasTelepeajes.Add(cuentasTelepeaje); await db.SaveChangesAsync(); return(Json(new { idCuenta = cuentasTelepeaje.Id, numcuenta = cuentasTelepeaje.NumCuenta, typecuenta = cuentasTelepeaje.TypeCuenta, success = "Se registró correctamente la cuenta: " + cuentasTelepeaje.NumCuenta + " para el cliente: " + cliente.NumCliente + " " + cliente.Nombre + " " + cliente.Apellidos + ".", error = "", })); } } return(Json(new { success = "", error = $"¡Ups! ocurrio un error inesperado.", })); } return(Json(new { success = "", error = "El cliente no puede crear una cuenta porque esta dado de baja.", })); } catch (Exception ex) { return(Json(new { success = "", error = $"¡Ups! ocurrio un error inesperado, {ex.Message}", })); } }
//[ValidateAntiForgeryToken] public async Task <ActionResult> CreateTagsAjax(Tags tags) { string message = string.Empty; try { //ViewBag.CuentaId = new SelectList(db.CuentasTelepeajes, "Id", "NumCuenta", tags.CuentaId); db.Configuration.ValidateOnSaveEnabled = false; ModelState.Remove("SaldoARecargar"); ModelState.Remove("ConfSaldoARecargar"); ModelState.Remove("IdCajero"); tags.NumTag.Trim(); var cuenta = await db.CuentasTelepeajes.Include(m => m.Tags).Where(x => x.Id == tags.CuentaId).FirstOrDefaultAsync(); if (cuenta == null) { return(HttpNotFound()); } if (cuenta.StatusCuenta == true) { var query = await db.Tags.Where(x => x.NumTag == tags.NumTag).ToListAsync(); var query_listnegra = await db.ListaNegras.Where(x => x.Numero == tags.NumTag).ToListAsync(); if (query.Count == 0 && query_listnegra.Count == 0) { tags.StatusResidente = false; tags.StatusTag = true; tags.DateTTag = DateTime.Now; tags.IdCajero = User.Identity.GetUserId(); if (ModelState.IsValid) { var UserId = User.Identity.GetUserId(); var lastCorteUser = await db.CortesCajeros .Where(x => x.IdCajero == UserId) .OrderByDescending(x => x.DateTApertura).FirstOrDefaultAsync(); if (lastCorteUser != null) { var detalle = new OperacionesCajero { Concepto = "TAG ACTIVADO", DateTOperacion = DateTime.Now, Numero = tags.NumTag, Tipo = "TAG", TipoPago = "EFE", CorteId = lastCorteUser.Id, CobroTag = double.Parse(tags.CobroTag, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }), NoReferencia = await methods.RandomNumReferencia(), }; switch (cuenta.TypeCuenta) { case "Colectiva": tags.SaldoTag = cuenta.SaldoCuenta; detalle.Monto = null; break; case "Individual": var SaldoSend = tags.SaldoTag; SaldoSend = SaldoSend.Replace(",", string.Empty); tags.SaldoTag = SaldoSend.Replace(".", string.Empty); detalle.Monto = double.Parse(tags.SaldoTag, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }); break; default: break; } if (tags.Checked) { var listnegra = new ListaNegra { Date = DateTime.Now, IdCajero = User.Identity.GetUserId(), Observacion = tags.Observacion, Numero = tags.OldTag, Tipo = "TAG" }; listnegra.SaldoAnterior = tags.OldSaldo == null || tags.OldSaldo == string.Empty ? (double?)null : double.Parse(tags.OldSaldo, new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," }); db.ListaNegras.Add(listnegra); } db.Tags.Add(tags); db.OperacionesCajeros.Add(detalle); await db.SaveChangesAsync(); message = "Se activó correctamente el tag: " + tags.NumTag + " para la cuenta: " + cuenta.NumCuenta + "."; var count_tags = $"# de Tags activados: {cuenta.Tags.Count}"; return(Json(new { Message = message, count_tags, JsonRequestBehavior.AllowGet })); } } message = "¡Ups! ocurrio un error inesperado."; return(Json(new { Message = message, JsonRequestBehavior.AllowGet })); } else { message = "El tag: " + tags.NumTag + " ya esta activado o en lista negra."; return(Json(new { Message = message, JsonRequestBehavior.AllowGet })); } } message = $"No se puede agregar el tag: {tags.NumTag} a la cuenta porque esta dada de baja."; return(Json(new { Message = message, JsonRequestBehavior.AllowGet })); } catch (Exception ex) { message = $"¡Ups! ocurrio un error inesperado, {ex.Message}"; return(Json(new { Message = message, JsonRequestBehavior.AllowGet })); } }