Esempio n. 1
0
        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;
            }
        }
Esempio n. 3
0
        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 }));
            }
        }