public void GrabarCupon(int tarjetaId, DateTime fechaCupon, int comercioId, int nroCupon, double importe, int cantidadCuotas, string observaciones) { if (ExisteCupon(tarjetaId, fechaCupon, comercioId, nroCupon)) { throw new Exception("El cupón ya existe"); } var tarjeta = TarjetaRepository.GetById(tarjetaId); if (tarjeta == null) { throw new Exception("La Tarjeta es requerida"); } var comercio = ComercioRepository.GetById(comercioId); if (comercio == null) { throw new Exception("El Comercio es requerido"); } var fechaCierreTarjeta = TarjetaFechaCierreRepository.GetFechaDeCierrePorMesYAnio(tarjeta, fechaCupon.Month, fechaCupon.Year); if (fechaCierreTarjeta == null) { throw new Exception("La fecha de cierre de la Tarjeta es requerida"); } var cuotas = CalcularCuotas(fechaCupon, importe, cantidadCuotas, tarjeta); // Creo la cabecera de la transaccion, o sea el cupon por el total del importe var transaccion = new Transaccion { Tarjeta = tarjeta, Comercio = comercio, FechaCompra = fechaCupon, NumeroCupon = nroCupon, Importe = importe, CantidadCuotas = cantidadCuotas, Observaciones = observaciones, TarjetaFechaCierre = fechaCierreTarjeta }; foreach (var cuota in cuotas) { var transaccionCuota = new TransaccionCuota { Transaccion = transaccion, NumeroCuota = cuota.NroCuota, Fecha = cuota.Fecha, Importe = cuota.Importe }; TransaccionCuotaRepository.Add(transaccionCuota); } }
public void ActualizarCupon(int cuponId, int tarjetaId, DateTime fechaCupon, int comercioId, int nroCupon, double importe, int cantidadCuotas, string observaciones) { var cupon = TraerCuponPorId(cuponId); if (cupon == null) { throw new Exception("Cupón inexistente"); } var fechaAnterior = cupon.FechaCompra; var importeAnterior = cupon.Importe; var cantidadCuotasAnterior = cupon.CantidadCuotas; var comercio = ComercioRepository.GetById(comercioId); if (comercio == null) { throw new Exception("El Comercio es requerido"); } cupon.Comercio = comercio; cupon.FechaCompra = fechaCupon; cupon.NumeroCupon = nroCupon; cupon.Importe = importe; cupon.CantidadCuotas = cantidadCuotas; cupon.Observaciones = observaciones; if (fechaAnterior != fechaCupon || importeAnterior != importe || cantidadCuotasAnterior != cantidadCuotas) { // Acá tengo que actualizar las cuotas EliminarCuotasDeCupon(cupon); var tarjeta = TarjetaRepository.GetById(tarjetaId); if (tarjeta == null) { throw new Exception("La Tarjeta es requerida"); } var cuotas = CalcularCuotas(fechaCupon, importe, cantidadCuotas, tarjeta); foreach (var cuota in cuotas) { var transaccionCuota = new TransaccionCuota { Transaccion = cupon, NumeroCuota = cuota.NroCuota, Fecha = cuota.Fecha, Importe = cuota.Importe }; TransaccionCuotaRepository.Add(transaccionCuota); } } }