public async Task <int> DeleteNonLaboraleOEspecialDaysAsync(HorarioDiaEspecialDTO DiaNoLaborableOEspecial)
        {
            using (var context = new ISSSTEEntities())
            {
                if (DiaNoLaborableOEspecial.IsNonWorking) // Es dia no laborable
                {
                    var query = context.TramiteUnidadAtencion
                                .Where(S => S.UnidadAtencionId == DiaNoLaborableOEspecial.DelegationId)
                                .AsQueryable();

                    // Si no se seleccciona un tramite, el horario sera agregado a todos los trámites existentes
                    if (DiaNoLaborableOEspecial.RequestTypeId.HasValue)
                    {
                        query = query.Where(H => H.CatTipoTramiteId == DiaNoLaborableOEspecial.RequestTypeId);
                    }

                    var tramitesUnidadesAtencion = query.ToList();

                    tramitesUnidadesAtencion.ForEach(Tu =>
                    {
                        var diaNoLaboral =
                            context.DiaNoLaborable.FirstOrDefault(
                                S => S.Fecha == DiaNoLaborableOEspecial.Date &&
                                S.TramiteUnidadAtencionId == Tu.TramiteUnidadAtencionId);

                        if (diaNoLaboral != null)
                        {
                            context.DiaNoLaborable.Remove(diaNoLaboral);
                        }
                    });
                }
                else
                {
                    //Es dia especial
                    var diaEspecial = context.DiaEspecial.FirstOrDefault(S => S.Fecha == DiaNoLaborableOEspecial.Date);

                    if (diaEspecial != null)
                    {
                        if (!diaEspecial.Horario.Any())
                        {
                            context.DiaEspecial.Remove(diaEspecial);
                        }
                        else
                        {
                            diaEspecial.EsActivo = false;
                            context.DiaEspecial.AddOrUpdate(diaEspecial);
                        }

                        diaEspecial.Horario.ToList()
                        .ForEach(HorarioDiaEspecial =>
                        {
                            HorarioDiaEspecial.EsActivo = false;
                            context.Horario.AddOrUpdate(HorarioDiaEspecial);
                        });
                    }
                }

                return(await context.SaveChangesAsync());
            }
        }
Esempio n. 2
0
 public async Task <HttpResponseMessage> DeleteNonLaboraleDays(HorarioDiaEspecialDTO specialDay)
 {
     return(await HandleOperationExecutionAsync(async() =>
     {
         var result = await _calendarDomainService.DeleteNonLaboraleOEspecialDaysAsync(specialDay);
         return Request.CreateResponse(HttpStatusCode.OK, result);
     }));
 }