/// <summary> /// Deprecated Method for adding a new object to the CompraEventos EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToCompraEventos(CompraEvento compraEvento) { base.AddObject("CompraEventos", compraEvento); }
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> /// Create a new CompraEvento object. /// </summary> /// <param name="payCenterId">Initial value of the PayCenterId property.</param> /// <param name="compraEventoId">Initial value of the CompraEventoId property.</param> /// <param name="paqueteId">Initial value of the PaqueteId property.</param> /// <param name="monto">Initial value of the Monto property.</param> /// <param name="eventos">Initial value of the Eventos property.</param> /// <param name="consumidos">Initial value of the Consumidos property.</param> /// <param name="fechaCreacion">Initial value of the FechaCreacion property.</param> /// <param name="baja">Initial value of the Baja property.</param> public static CompraEvento CreateCompraEvento(global::System.Int32 payCenterId, global::System.Int32 compraEventoId, global::System.Int32 paqueteId, global::System.Decimal monto, global::System.Int16 eventos, global::System.Int16 consumidos, global::System.DateTime fechaCreacion, global::System.Boolean baja) { CompraEvento compraEvento = new CompraEvento(); compraEvento.PayCenterId = payCenterId; compraEvento.CompraEventoId = compraEventoId; compraEvento.PaqueteId = paqueteId; compraEvento.Monto = monto; compraEvento.Eventos = eventos; compraEvento.Consumidos = consumidos; compraEvento.FechaCreacion = fechaCreacion; compraEvento.Baja = baja; return compraEvento; }