public ActionResult Create(MovimientoEmpresa movimientoempresa) { if (ModelState.IsValid) { db.MovimientoEmpresas.AddObject(movimientoempresa); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.PayCenterId = new SelectList(db.Movimientos, "PayCenterId", "Clave", movimientoempresa.PayCenterId); return View(movimientoempresa); }
public ViewResult Confirm(IEnumerable<PaqueteVM> model) { Succeed = false; //TODO:Validar que tenga el saldo suficiente. Quiero agregar un campo al PayCenter para determinar su saldo sin tener que recalcularlo PaycenterBR payCenterBR = new PaycenterBR(); var cuentaId = payCenterBR.GetOrCreateCuentaPayCenter(PayCenterId, enumTipoCuenta.Pago_de_Servicios, PROVEEDOR_EVOLUCIONAMOVIL); EstadoCuentaBR estadoCuentaBR = new EstadoCuentaBR(repository.context); decimal totalCompra = 0; List<CompraEvento> paquetesComprados = new List<CompraEvento>(); foreach (var paquete in model) { //TODO:Esta validación debería estar en un BR aparte var p = repository.LoadById(paquete.PaqueteId); if (p == null) { AddValidationMessage(enumMessageType.BRException, "No se ha encontrado el paquete de " + paquete.Creditos.ToString() + "créditos"); break; } if (p.FechaVencimiento >= DateTime.UtcNow.GetCurrentTime()) { totalCompra += p.Creditos; CompraEvento compraEvento = new CompraEvento { Consumidos = 0, Eventos = p.Creditos, FechaCreacion = DateTime.UtcNow.GetCurrentTime(), Monto = p.Precio, PaqueteId = p.PaqueteId, PayCenterId = PayCenterId }; //Agrego a la lista de paquetes que se van a agregar paquetesComprados.Add(compraEvento); //Agrego al repositorio repository.Add(compraEvento); var movimiento = estadoCuentaBR.CrearMovimiento(PayCenterId, enumTipoMovimiento.Cargo, 0, cuentaId, p.Precio, enumMotivo.Compra, PayCenterName, enumEstatusMovimiento.Aplicado); //Agrego movimiento de abono para la empresa //TODO: ESTO DEBE DE IR EN EstadoCuentaBR //TODO: Revisar el saldo actual //****************************************************************************************************+ var movimientoEmpresaPago = new MovimientoEmpresa { Clave = DateTime.UtcNow.GetCurrentTime().ToString("yyyyMMdd") + "0" + ((Int16)enumMotivo.Financiamiento).ToString() + new Random().Next(0, 99999).ToString(), IsAbono = true, Monto = p.Precio, Motivo = (short)enumMotivo.Compra, Movimiento = movimiento, //SaldoActual = saldoActual, Status = (short)enumEstatusMovimiento.Procesando, UserName = PayCenterName, FechaCreacion = DateTime.UtcNow.GetCurrentTime(), FechaActualizacion = DateTime.UtcNow.GetCurrentTime() }; MovimientosEmpresaRepository movimientosEmpresaRepository = new MovimientosEmpresaRepository(repository.context); movimientosEmpresaRepository.Add(movimientoEmpresaPago); //****************************************************************************************************+ } else { AddValidationMessage(enumMessageType.BRException, "El paquete seleccionado ha expirado. Intente con otro paquete o pongase en contacto con soporte"); break; } } var saldos = estadoCuentaBR.GetSaldosPagoServicio(PayCenterId); if (saldos.SaldoDisponible < totalCompra) { AddValidationMessage(enumMessageType.BRException, "No cuenta con saldo suficiente para comprar más paquetes"); return View(model); } Succeed = repository.Save(); ViewBag.Succeed = Succeed; if (Succeed) { AddValidationMessage(enumMessageType.Succeed, "Se ha realizado la compra de " + totalCompra + " créditos exitosamente."); //Julius: Permite avisar a los emails configurados en el momento que se realizó la compra del paquete StringBuilder emailMessage = new StringBuilder(); emailMessage.AppendLine("<p>El Paycenter <b>" + this.PayCenterName + "</b> ha realizado la compra de:<p>"); emailMessage.AppendLine("<table>"); paquetesComprados.ForEach(x => { emailMessage.AppendLine("<tr>"); emailMessage.AppendLine("<td>Paquete: <b>PAQ" + x.PaqueteId + "</b></td>"); emailMessage.AppendLine("<td>Eventos: <b>" + x.Eventos.ToString() + "</b></td>"); emailMessage.AppendLine("<td>Monto: <b>" + x.Monto.ToString("C") + "</b></td>"); emailMessage.AppendLine("</tr>"); }); emailMessage.AppendLine("<p>Fecha de compra: " + DateTime.Now.GetCurrentTime().ToString() + "</p>"); emailMessage.AppendLine("</table>"); var paquetesEmail = ConfigurationManager.AppSettings.Get("PaquetesEmail"); EmailHelper.Enviar(emailMessage.ToString(), "Compra Paquete - " + this.PayCenterName, paquetesEmail); } else { //TODO: Leer de los mensajes que vengan del save //ValidationMessages = repository.ValidationMessages AddValidationMessage(enumMessageType.UnhandledException, "No fue posible realizar la compra. Intente más tarde"); } return View(model); }
/// <summary> /// Deprecated Method for adding a new object to the MovimientoEmpresas EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToMovimientoEmpresas(MovimientoEmpresa movimientoEmpresa) { base.AddObject("MovimientoEmpresas", movimientoEmpresa); }
/// <summary> /// Create a new MovimientoEmpresa object. /// </summary> /// <param name="movimientoEmpresaId">Initial value of the MovimientoEmpresaId property.</param> /// <param name="clave">Initial value of the Clave property.</param> /// <param name="monto">Initial value of the Monto property.</param> /// <param name="motivo">Initial value of the Motivo property.</param> /// <param name="userName">Initial value of the UserName property.</param> /// <param name="isAbono">Initial value of the IsAbono property.</param> /// <param name="status">Initial value of the Status property.</param> /// <param name="saldoActual">Initial value of the SaldoActual property.</param> /// <param name="fechaCreacion">Initial value of the FechaCreacion property.</param> /// <param name="baja">Initial value of the Baja property.</param> /// <param name="fechaActualizacion">Initial value of the FechaActualizacion property.</param> /// <param name="referenciaId">Initial value of the ReferenciaId property.</param> public static MovimientoEmpresa CreateMovimientoEmpresa(global::System.Int32 movimientoEmpresaId, global::System.String clave, global::System.Decimal monto, global::System.Int16 motivo, global::System.String userName, global::System.Boolean isAbono, global::System.Int16 status, global::System.Decimal saldoActual, global::System.DateTime fechaCreacion, global::System.Boolean baja, global::System.DateTime fechaActualizacion, global::System.Int32 referenciaId) { MovimientoEmpresa movimientoEmpresa = new MovimientoEmpresa(); movimientoEmpresa.MovimientoEmpresaId = movimientoEmpresaId; movimientoEmpresa.Clave = clave; movimientoEmpresa.Monto = monto; movimientoEmpresa.Motivo = motivo; movimientoEmpresa.UserName = userName; movimientoEmpresa.IsAbono = isAbono; movimientoEmpresa.Status = status; movimientoEmpresa.SaldoActual = saldoActual; movimientoEmpresa.FechaCreacion = fechaCreacion; movimientoEmpresa.Baja = baja; movimientoEmpresa.FechaActualizacion = fechaActualizacion; movimientoEmpresa.ReferenciaId = referenciaId; return movimientoEmpresa; }
public ActionResult Edit(MovimientoEmpresa movimientoempresa) { if (ModelState.IsValid) { db.MovimientoEmpresas.Attach(movimientoempresa); db.ObjectStateManager.ChangeObjectState(movimientoempresa, EntityState.Modified); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.PayCenterId = new SelectList(db.Movimientos, "PayCenterId", "Clave", movimientoempresa.PayCenterId); return View(movimientoempresa); }