示例#1
0
        public ResponsePackage <bool> AsegurarVehiculo(SeguroDto seguroDto)
        {
            var responsePackage = new ResponsePackage <bool> {
                Result = false
            };
            var     usuario                  = _db.Usuario.FirstOrDefault(u => u.Id == Guid.Parse(seguroDto.UsuarioId));
            var     porcentajeCiudad         = 0;
            var     porcentajeEdad           = 0;
            var     porcentajeTiempoServicio = 0;
            var     totalPorcentajes         = 0;
            decimal valorRequerimientos      = 0;

            if (usuario == null)
            {
                responsePackage.Message = "No se han encontrado datos del usuario";
                return(responsePackage);
            }
            var vehiculo = _db.Vehiculo.FirstOrDefault(v => v.Id == Guid.Parse(seguroDto.VehiculoId));

            if (vehiculo == null)
            {
                responsePackage.Message = "No se han encontrado datos del vehiculo";
                return(responsePackage);
            }

            if (vehiculo.EstaAsegurado)
            {
                responsePackage.Message = "El vehículo ya se encuentra asegurado";
                return(responsePackage);
            }

            var edadUsuario = CalcularEdad(usuario.FechaNacimiento);

            if (edadUsuario < 16)
            {
                responsePackage.Message = "No se realizan ventas de seguro a menores de 16 años";
                return(responsePackage);
            }
            var ciudad = _db.Ciudad.FirstOrDefault(c => c.Id == usuario.CiudadId);

            if (ciudad.Nombre == _validarNombreCiudad)
            {
                porcentajeCiudad = 10;
            }

            if (edadUsuario >= 16 && edadUsuario < 25)
            {
                porcentajeEdad = 30;
            }
            else if (edadUsuario >= 25 && edadUsuario < 40)
            {
                porcentajeEdad = 10;
            }
            else if (edadUsuario >= 40)
            {
                porcentajeEdad = 0;
            }

            if (CalcularTiempoServicio(vehiculo.Anio) > 10)
            {
                porcentajeTiempoServicio = 5;
            }

            totalPorcentajes = porcentajeCiudad + porcentajeEdad + porcentajeTiempoServicio;
            if (totalPorcentajes > 0)
            {
                valorRequerimientos = (_precioBase * (decimal)totalPorcentajes) / 100;
            }

            var seguro = new Seguro
            {
                UsuarioId  = Guid.Parse(seguroDto.UsuarioId),
                VehiculoId = Guid.Parse(seguroDto.VehiculoId),
                Valor      = _precioBase + valorRequerimientos
            };

            try
            {
                _db.Seguro.Add(seguro);
                vehiculo.EstaAsegurado = true;
                _db.SaveChanges();
                responsePackage.Message = "Se ha registrado el seguro correctamente";
                responsePackage.Result  = true;
            }
            catch (Exception ex)
            {
                responsePackage.Message = "Se ha presentado un error al guardar un usuario";
                responsePackage.Result  = false;
                responsePackage.Errors  = ex;
                return(responsePackage);
            }

            return(responsePackage);
        }
        public IActionResult AsegurarVehiculo(SeguroDto seguroDto)
        {
            var response = _seguroService.AsegurarVehiculo(seguroDto);

            return(Ok(response));
        }