Exemplo n.º 1
0
        public CrearServicioFinancieroResponse Ejecutar(CrearServicioFinancieroRequest request)
        {
            ServicioFinanciero cuenta = _unitOfWork.CuentaBancariaRepository.FindFirstOrDefault(t => t.Numero == request.Numero);

            if (cuenta == null)
            {
                try
                {
                    ServicioFinanciero cuentaNueva = (ServicioFinanciero)servicioFinancieroFactory.GetServicioFinanciero(request.TipoCuenta);                    //Debe ir un factory que determine que tipo de cuenta se va a crear
                    cuentaNueva = InicializarServicioFinanciero(cuentaNueva, request);
                    _unitOfWork.CuentaBancariaRepository.Add(cuentaNueva);
                    _unitOfWork.Commit();
                    return(new CrearServicioFinancieroResponse()
                    {
                        Mensaje = $"Se creó con exito la cuenta {cuentaNueva.Numero}."
                    });
                }
                catch (System.Exception)
                {
                    return(new CrearServicioFinancieroResponse()
                    {
                        Mensaje = $"El tipo de servicio eligido, no existe"
                    });
                }
            }
            else
            {
                return(new CrearServicioFinancieroResponse()
                {
                    Mensaje = $"El número de cuenta ya exite"
                });
            }
        }
Exemplo n.º 2
0
        private ServicioFinanciero InicializarServicioFinanciero(ServicioFinanciero servicioFinanciero, CrearServicioFinancieroRequest request)
        {
            servicioFinanciero.Nombre = request.Nombre;
            servicioFinanciero.Numero = request.Numero;
            servicioFinanciero.Ciudad = request.Ciudad;
            switch (request.TipoCuenta)
            {
            case (int)ServicioFinancieroEnum.CUENTA_DE_AHORROS: return(servicioFinanciero);

            case (int)ServicioFinancieroEnum.CUENTA_CORRIENTE:
                CuentaCorriente cuentaCorriente = (CuentaCorriente)servicioFinanciero;
                cuentaCorriente.CupoDeSobregiro = request.CupoDeSobregiro;
                return(cuentaCorriente);

            case (int)ServicioFinancieroEnum.CERTIFICADO_DE_DEPOSITO_A_TERMINO:
                CertificadoDeDepositoATermino cdt = (CertificadoDeDepositoATermino)servicioFinanciero;
                cdt.DiasDeTermino = request.DiasDeTermino;
                return(cdt);

            case (int)ServicioFinancieroEnum.TARJETA_DE_CREDITO:
                TarjetaDeCredito tarjetaDeCredito = (TarjetaDeCredito)servicioFinanciero;
                tarjetaDeCredito.ContratarCupo(request.CupoPreAprobado);
                return(tarjetaDeCredito);

            default: throw new InvalidOperationException();
            }
        }