コード例 #1
0
        public async Task <IActionResult> Create(SolicitudPlanificacionVacacionesViewModel modelo)
        {
            try {
                var response = await apiServicio.EditarAsync <Response>(
                    modelo,
                    new Uri(WebApp.BaseAddress),
                    "api/SolicitudPlanificacionVacaciones/InsertarSolicitudPlanificacionVacaciones"
                    );

                if (response.IsSuccess)
                {
                    return(this.Redireccionar(
                               "SolicitarPlanificacionVacaciones",
                               "Index",
                               $"{Mensaje.Success}|{response.Message}"
                               ));
                }

                this.TempData["MensajeTimer"] = $"{Mensaje.Error}|{response.Message}|{"10000"}";

                return(View(modelo));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public async Task <Response> EditarSolicitudPlanificacionVacaciones([FromBody] SolicitudPlanificacionVacacionesViewModel solicitudPlanificacionVacacionesViewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ModeloInvalido
                    });
                }

                var modelo = await db.SolicitudPlanificacionVacaciones
                             .Where(w => w.IdSolicitudPlanificacionVacaciones == solicitudPlanificacionVacacionesViewModel.IdSolicitudPlanificacionVacaciones)
                             .FirstOrDefaultAsync();

                modelo.Estado         = solicitudPlanificacionVacacionesViewModel.Estado;
                modelo.FechaDesde     = solicitudPlanificacionVacacionesViewModel.FechaDesde;
                modelo.FechaHasta     = solicitudPlanificacionVacacionesViewModel.FechaHasta;
                modelo.FechaSolicitud = DateTime.Now;
                modelo.IdEmpleado     = solicitudPlanificacionVacacionesViewModel.DatosBasicosEmpleadoViewModel.IdEmpleado;

                db.SolicitudPlanificacionVacaciones.Update(modelo);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.GuardadoSatisfactorio
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <Response> InsertarSolicitudPlanificacionVacaciones([FromBody] SolicitudPlanificacionVacacionesViewModel solicitudPlanificacionVacacionesViewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ModeloInvalido
                    });
                }

                var modelo = new SolicitudPlanificacionVacaciones {
                    Estado         = solicitudPlanificacionVacacionesViewModel.Estado,
                    FechaDesde     = solicitudPlanificacionVacacionesViewModel.FechaDesde,
                    FechaHasta     = solicitudPlanificacionVacacionesViewModel.FechaHasta,
                    FechaSolicitud = DateTime.Now,
                    IdEmpleado     = solicitudPlanificacionVacacionesViewModel.DatosBasicosEmpleadoViewModel.IdEmpleado,
                    Observaciones  = ""
                };

                db.SolicitudPlanificacionVacaciones.Add(modelo);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.GuardadoSatisfactorio
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <Response> AprobarSolicitudPlanificacionVacaciones([FromBody] SolicitudPlanificacionVacacionesViewModel solicitudPlanificacionVacacionesViewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ModeloInvalido
                    });
                }

                var modelo = await db.SolicitudPlanificacionVacaciones
                             .Where(w => w.IdSolicitudPlanificacionVacaciones == solicitudPlanificacionVacacionesViewModel.IdSolicitudPlanificacionVacaciones)
                             .FirstOrDefaultAsync();

                modelo.Estado        = solicitudPlanificacionVacacionesViewModel.Estado;
                modelo.Observaciones = solicitudPlanificacionVacacionesViewModel.Observaciones;

                db.SolicitudPlanificacionVacaciones.Update(modelo);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.GuardadoSatisfactorio
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <SolicitudPlanificacionVacacionesViewModel> CrearSolicitudesPlanificacionesVacaciones([FromBody] IdFiltrosViewModel idFiltrosViewModel)
        {
            try
            {
                var usuario = await db.Empleado.Include(i => i.Persona)
                              .Where(w => w.NombreUsuario == idFiltrosViewModel.NombreUsuario).FirstOrDefaultAsync();

                var IOMPEmpleado = await db.IndiceOcupacionalModalidadPartida
                                   .Include(i => i.TipoNombramiento)
                                   .Where(w => w.IdEmpleado == usuario.IdEmpleado)
                                   .OrderByDescending(o => o.Fecha)
                                   .FirstOrDefaultAsync();

                await CalcularYRegistrarVacacionesPorEmpleado(usuario.IdEmpleado);

                var vacacionesAcumuladas = 0;

                var vacaciones = await db.VacacionesEmpleado
                                 .Where(w => w.IdEmpleado == usuario.IdEmpleado)
                                 .ToListAsync();

                foreach (var item in vacaciones)
                {
                    vacacionesAcumuladas = vacacionesAcumuladas + item.VacacionesNoGozadas - item.VacacionesGozadas;
                }

                //var WorkingTimeInYears = IOMPEmpleado.Fecha.Month.
                var fechaIngreso = new TimeSpan(IOMPEmpleado.Fecha.Year, IOMPEmpleado.Fecha.Month, IOMPEmpleado.Fecha.Day);


                var estado = ConstantesEstadosVacaciones.ListaEstadosVacaciones.Where(w => w.GrupoAprobacion == 2).FirstOrDefault();

                var hoy = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

                var modelo = new SolicitudPlanificacionVacacionesViewModel
                {
                    DatosBasicosEmpleadoViewModel = new DatosBasicosEmpleadoViewModel
                    {
                        Nombres        = usuario.Persona.Nombres,
                        Apellidos      = usuario.Persona.Apellidos,
                        Identificacion = usuario.Persona.Identificacion,
                        IdEmpleado     = usuario.IdEmpleado,
                        IdPersona      = usuario.Persona.IdPersona
                    },

                    IdSolicitudPlanificacionVacaciones = 0,

                    FechaDesde     = hoy,
                    FechaHasta     = hoy,
                    FechaSolicitud = hoy,

                    Observaciones = "",

                    Estado = (estado != null) ? estado.ValorEstado : 0,

                    NombreEstado = (estado != null)?estado.NombreEstado:"Sin estados",

                    VacacionesAcumuladas = vacacionesAcumuladas
                };


                return(modelo);
            }
            catch (Exception ex)
            {
                return(new SolicitudPlanificacionVacacionesViewModel());
            }
        }