예제 #1
0
        public async Task <ActionResult> Index(int idPerito, int idAseguradora)
        {
            List <Siniestro> siniestros = null;

            if (idPerito == 0)
            {
                siniestros = await _repositorioSiniestros.ObtenerTodos();
            }
            else
            {
                siniestros = await _repositorioSiniestros.ObtenerPorIdPerito(idPerito);
            }

            if (idAseguradora != 0)
            {
                siniestros = siniestros.Where(siniestro => siniestro.Aseguradora.Id == idAseguradora)
                             .ToList();
            }

            if (siniestros.Count == 0)
            {
                return(StatusCode(500, "No existen siniestros"));
            }

            siniestros = siniestros.OrderByDescending(siniestro => siniestro.FechaHoraAlta)
                         .ToList();

            List <SiniestroVm> siniestrosVms = SiniestroVm.ConvertirASiniestroVm(siniestros);

            return(Ok(siniestrosVms));
        }
예제 #2
0
        public async Task <ActionResult> ObtenerPorId(int id)
        {
            Siniestro siniestro = await _repositorioSiniestros.ObtenerPorId(id);

            if (siniestro is null)
            {
                return(NotFound($"No se ha encontrado el siniestro con id {id}"));
            }

            SiniestroVm siniestroVm = new SiniestroVm()
            {
                Id                  = siniestro.Id,
                IdEstado            = siniestro.EstadoId,
                Estado              = siniestro.Estado.Nombre,
                IdAseguradora       = siniestro.AseguradoraId,
                Aseguradora         = siniestro.Aseguradora.Nombre,
                Direccion           = siniestro.Direccion,
                Descripcion         = siniestro.Descripcion,
                IdPerito            = siniestro.PeritoId,
                Perito              = siniestro.Perito.Nombre,
                FechaHoraAlta       = siniestro.FechaHoraAlta.ToString("dd/MM/yyyy HH:mm"),
                IdSujetoAfectado    = (int)siniestro.SujetoAfectado,
                SujetoAfectado      = siniestro.SujetoAfectado.ToString(),
                IdDanio             = siniestro.DanioId.Value,
                Danio               = siniestro.Danio.Nombre,
                ImpValoracionDanios = $"{siniestro.ImpValoracionDanios.ToString("F")} €"
            };

            return(Ok(siniestroVm));
        }
예제 #3
0
        public void ValidarSiniestro(SiniestroVm siniestroVm)
        {
            if (siniestroVm.IdAseguradora <= 0)
            {
                throw new CodigoErrorHttpException("La aseguradora seleccionada no es válida", HttpStatusCode.InternalServerError);
            }

            if (siniestroVm.IdUsuarioAlta <= 0)
            {
                throw new CodigoErrorHttpException("El usuario de alta no es válido", HttpStatusCode.InternalServerError);
            }

            List <int> idsSujetoAfectado = Enum.GetValues(typeof(SujetoAfectado)).Cast <int>()
                                           .ToList();

            bool existeIdSujetoAfectado = Array.Exists(idsSujetoAfectado.ToArray(), id => id == siniestroVm.IdSujetoAfectado);

            if (!existeIdSujetoAfectado)
            {
                throw new CodigoErrorHttpException("El sujeto afectado seleccionado no es válido", HttpStatusCode.InternalServerError);
            }

            if (siniestroVm.IdPerito <= 0)
            {
                throw new CodigoErrorHttpException("El perito seleccionado no es válido", HttpStatusCode.InternalServerError);
            }

            if (siniestroVm.IdDanio <= 0)
            {
                throw new CodigoErrorHttpException("El daño seleccionado no es válido", HttpStatusCode.InternalServerError);
            }

            if (siniestroVm.Direccion is null || siniestroVm.Direccion.Length == 0)
            {
                throw new CodigoErrorHttpException("La dirección está vacía", HttpStatusCode.InternalServerError);
            }

            if (siniestroVm.Descripcion is null || siniestroVm.Descripcion.Length == 0)
            {
                throw new CodigoErrorHttpException("La descripción está vacía", HttpStatusCode.InternalServerError);
            }
        }
예제 #4
0
        public async Task <ActionResult> Create(SiniestroVm siniestroVm)
        {
            ValidarSiniestro(siniestroVm);

            Estado estado = await _repositorioEstados.ObtenerPorTipo(TipoEstado.SinValorar);

            Aseguradora aseguradora = await _repositorioAseguradoras.ObtenerPorId(siniestroVm.IdAseguradora);

            Usuario usuarioCreado = await _repositorioUsuarios.ObtenerPorId(siniestroVm.IdUsuarioAlta);

            SujetoAfectado sujetoAfectado = (SujetoAfectado)siniestroVm.IdSujetoAfectado;

            Usuario perito = await _repositorioPeritos.ObtenerPorId(siniestroVm.IdPerito);

            Danio danio = await _repositorioDanios.ObtenerPorId(siniestroVm.IdDanio);

            Siniestro siniestro = new Siniestro()
            {
                Estado              = estado,
                Aseguradora         = aseguradora,
                Direccion           = siniestroVm.Direccion,
                Descripcion         = siniestroVm.Descripcion,
                UsuarioCreado       = usuarioCreado,
                FechaHoraAlta       = DateTime.Now,
                SujetoAfectado      = sujetoAfectado,
                ImpValoracionDanios = 0.00M,
                Perito              = perito,
                Danio = danio
            };

            try
            {
                await _repositorioSiniestros.Guardar(siniestro);
            }
            catch (Exception)
            {
                return(StatusCode(500, "No se ha podido crear el siniestro"));
            }

            return(Ok(true));
        }
예제 #5
0
        public async Task <ActionResult> Edit(int id, SiniestroVm siniestroVm)
        {
            ValidarSiniestro(siniestroVm);

            Estado estado = await _repositorioEstados.ObtenerPorId(siniestroVm.IdEstado);

            Aseguradora aseguradora = await _repositorioAseguradoras.ObtenerPorId(siniestroVm.IdAseguradora);

            SujetoAfectado sujetoAfectado = (SujetoAfectado)siniestroVm.IdSujetoAfectado;

            Usuario perito = await _repositorioPeritos.ObtenerPorId(siniestroVm.IdPerito);

            Danio danio = await _repositorioDanios.ObtenerPorId(siniestroVm.IdDanio);

            Siniestro siniestro = await _repositorioSiniestros.ObtenerPorId(id);

            siniestro.Estado         = estado;
            siniestro.Aseguradora    = aseguradora;
            siniestro.Direccion      = siniestroVm.Direccion;
            siniestro.Descripcion    = siniestroVm.Descripcion;
            siniestro.SujetoAfectado = sujetoAfectado;
            siniestro.Perito         = perito;
            siniestro.Danio          = danio;

            if (siniestroVm.IdEstado == (int)TipoEstado.Valorado)
            {
                siniestro.ImpValoracionDanios = decimal.Parse(siniestroVm.ImpValoracionDanios);
            }
            else
            {
                siniestro.ImpValoracionDanios = 0;
            }

            await _repositorioSiniestros.Actualizar(siniestro);

            return(Ok(true));
        }