Пример #1
0
        /// <summary>
        ///     Cancelación automática de las citas que no se llevaron a cabo
        ///     Idealmente, el día anterior
        ///     Caso 1. Citas del dia anterior
        ///     Caso 2. Citas del dia, anteriores a la hora actual
        ///     Caso 3. Citas del dia, iguales a la hora actual y menores al minuto actual
        /// </summary>
        public async Task CancelacionAutomaticaDelDia()
        {
            using (var modelo = new ISSSTEEntities())
            {
                var fechaHoy = DateTime.Now;

                var citas = await(from c in modelo.Solicitud
                                  where (((DbFunctions.TruncateTime(c.FechaCita).Value < DbFunctions.TruncateTime(fechaHoy).Value) ||
                                          (DbFunctions.TruncateTime(c.FechaCita).Value == DbFunctions.TruncateTime(fechaHoy).Value &&
                                           c.Horario.HoraInicio.Hours < fechaHoy.Hour) ||
                                          (DbFunctions.TruncateTime(c.FechaCita).Value == DbFunctions.TruncateTime(fechaHoy).Value &&
                                           c.Horario.HoraInicio.Hours == fechaHoy.Hour &&
                                           c.Horario.HoraInicio.Minutes <= fechaHoy.Minute)) &&
                                         c.EsActivo &&
                                         c.CatTipoEdoCitaId == Enumeracion.EnumTipoEdoCita.Pendiente)
                                  select c).ToListAsync();


                foreach (var cita in citas)
                {
                    cita.CatTipoEdoCitaId = Enumeracion.EnumTipoEdoCita.NoAsistio;
                }

                await modelo.SaveChangesAsync();
            }
        }
        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());
            }
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="DetalleTramite"></param>
        /// <returns></returns>
        /// <exception cref="QuejasMedicasException"></exception>
        public async Task <int> AgregarOActualizarCatTipoTramite(CatTipoTramiteDTO DetalleTramite)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var existeConcepto =
                    modelo.CatTipoTramite.FirstOrDefault(
                        S => S.Concepto.Equals(DetalleTramite.Concepto) &&
                        S.CatTipoTramiteId != DetalleTramite.CatTipoTramiteId);

                if (existeConcepto != null)
                {
                    throw new QuejasMedicasException(
                              string.Format(EnumConstErrores.ErrorConceptoYaExiste, "Nombre del trámite"));
                }

                var resultado = new CatTipoTramite
                {
                    CatTipoTramiteId = DetalleTramite.CatTipoTramiteId,
                    Concepto         = DetalleTramite.Concepto,
                    Semaforo         = DetalleTramite.Semaforo,
                    Homoclave        = DetalleTramite.HomoClave,
                    EsActivo         = DetalleTramite.EsActivo
                };

                modelo.CatTipoTramite.AddOrUpdate(resultado);

                return(await modelo.SaveChangesAsync());
            }
        }
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="UnidadMedicaDto"></param>
        /// <returns></returns>
        /// <exception cref="QuejasMedicasException"></exception>
        public async Task <int> AgregarOActualizarUnidadMedica(UnidadMedicaDTO UnidadMedicaDto)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var existeConcepto =
                    modelo.UnidadMedica.FirstOrDefault(S => S.Descripcion.Equals(UnidadMedicaDto.Descripcion) &&
                                                       S.UnidadMedicaId != UnidadMedicaDto.UnidadMedicaId);

                if (existeConcepto != null)
                {
                    throw new QuejasMedicasException(string.Format(EnumConstErrores.ErrorConceptoYaExiste,
                                                                   "nombre de la unidad médica"));
                }

                var resultado = new UnidadMedica
                {
                    UnidadMedicaId   = UnidadMedicaDto.UnidadMedicaId,
                    Descripcion      = UnidadMedicaDto.Descripcion,
                    UnidadAtencionId = UnidadMedicaDto.UnidadAtencionId,
                    EsActivo         = UnidadMedicaDto.EsActivo
                };

                modelo.UnidadMedica.AddOrUpdate(resultado);

                return(await modelo.SaveChangesAsync());
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="DetalleEstadoCita"></param>
        /// <returns></returns>
        /// <exception cref="QuejasMedicasException"></exception>
        public async Task <int> AgregarOActualizarCatTipoEdoCita(CatTipoEdoCitaDTO DetalleEstadoCita)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var existeConcepto =
                    modelo.CatTipoEdoCita.FirstOrDefault(
                        S => S.Concepto.Equals(DetalleEstadoCita.Concepto) &&
                        S.CatTipoEdoCitaId != DetalleEstadoCita.CatTipoEdoCitaId);

                if (existeConcepto != null)
                {
                    throw new QuejasMedicasException(string.Format(EnumConstErrores.ErrorConceptoYaExiste,
                                                                   "Nombre del Estado de la cita"));
                }

                var resultado = new CatTipoEdoCita
                {
                    CatTipoEdoCitaId = DetalleEstadoCita.CatTipoEdoCitaId,
                    Concepto         = DetalleEstadoCita.Concepto,
                    Semaforo         = DetalleEstadoCita.Semaforo,
                    EsActivo         = DetalleEstadoCita.EsActivo
                };

                modelo.CatTipoEdoCita.AddOrUpdate(resultado);

                return(await modelo.SaveChangesAsync());
            }
        }
        public async Task <int> GuardarHorariosDiasEspecialesAsync(List <HorarioDiaEspecialDTO> HorariosDiasEspeciales)
        {
            using (var context = new ISSSTEEntities())
            {
                HorariosDiasEspeciales.ForEach(NuevoDiaEspecial =>
                {
                    var query = context.TramiteUnidadAtencion
                                .Where(S => S.UnidadAtencionId == NuevoDiaEspecial.DelegationId)
                                .AsQueryable();

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

                    var tramitesUnidadesAtencion = query.ToList();

                    tramitesUnidadesAtencion.ForEach(Tu =>
                    {
                        var firstOrDefault = context.DiaEspecial.FirstOrDefault(S => S.Fecha == NuevoDiaEspecial.Date);
                        if (firstOrDefault != null)
                        {
                            var horarioNuevo = new Horario
                            {
                                //HorarioId = nuevoDiaEspecial.DiaEspecialDTOScheduleId,
                                Capacidad = NuevoDiaEspecial.Capacity,
                                EsActivo  = true,
                                TramiteUnidadAtencionId = Tu.TramiteUnidadAtencionId,
                                CatTipoDiaSemanaId      = null,
                                HoraInicio    = NuevoDiaEspecial.Time,
                                EsDiaEspecial = true,
                                DiaEspecialId = firstOrDefault.DiaEspecialId
                            };

                            var resultadoHorarioDia =
                                context.Horario.FirstOrDefault(
                                    S => S.HoraInicio.Equals(NuevoDiaEspecial.Time) && S.EsDiaEspecial &&
                                    S.TramiteUnidadAtencionId == Tu.TramiteUnidadAtencionId);

                            //Si ya existe el horario especial no es agregado
                            if (resultadoHorarioDia == null)
                            {
                                context.Horario.Add(horarioNuevo);
                            }
                            else
                            {
                                horarioNuevo.HorarioId = resultadoHorarioDia.HorarioId;
                                context.Horario.AddOrUpdate(horarioNuevo);
                            }
                        }
                    });
                });

                return(await context.SaveChangesAsync());
            }
        }
        /// <summary>
        ///     Guarda los horarios por tramite/unidad administrativa
        /// </summary>
        /// <param name="Horarios"></param>
        /// <returns></returns>
        public async Task <int> GuardarHorariosAsync(List <Schedule> Horarios)
        {
            using (var context = new ISSSTEEntities())
            {
                Horarios.ForEach(Horario =>
                {
                    var query = context.TramiteUnidadAtencion
                                .Where(S => S.UnidadAtencionId == Horario.DelegationId)
                                .AsQueryable();

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

                    var tramitesUnidadesAtencion = query.ToList();

                    tramitesUnidadesAtencion.ForEach(Tu =>
                    {
                        var horarioNuevo =
                            new Horario
                        {
                            EsActivo = true,
                            TramiteUnidadAtencionId = Tu.TramiteUnidadAtencionId,
                            CatTipoDiaSemanaId      = Horario.WeekdayId,
                            HoraInicio    = Horario.Time,
                            EsDiaEspecial = false,
                            Capacidad     = Horario.Capacity
                        };


                        var resultadoHorario =
                            context.Horario.FirstOrDefault(
                                S => S.HoraInicio.Equals(Horario.Time) && S.CatTipoDiaSemanaId == Horario.WeekdayId &&
                                S.TramiteUnidadAtencionId == Tu.TramiteUnidadAtencionId);

                        //Si ya existe el horario no es agregado
                        if (resultadoHorario == null)
                        {
                            context.Horario.Add(horarioNuevo);
                        }
                        else
                        {
                            horarioNuevo.HorarioId = resultadoHorario.HorarioId;
                            context.Horario.AddOrUpdate(horarioNuevo);
                        }
                    });
                });


                return(await context.SaveChangesAsync());
            }
        }
Пример #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="SettingDetail"></param>
        /// <returns></returns>
        public async Task <int> SaveCatSysConfiguracion(CatalogoResultDTO SettingDetail)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var resultado = await modelo.CatSysConfiguracion
                                .Where(S => S.CatSysConfiguracionId == SettingDetail.CatalogoId)
                                .FirstOrDefaultAsync();

                resultado.Valor = SettingDetail.Valor;
                return(await modelo.SaveChangesAsync());
            }
        }
Пример #9
0
        /// <summary>
        ///     Reinicio de contador - Número de Folio
        /// </summary>
        public async Task ReinicioContador()
        {
            if (DateTime.Now.Month != 1 && DateTime.Now.Month != 2 &&
                DateTime.Now.Month != 12 && DateTime.Now.Month != 11)
            {
                return;
            }

            using (var modelo = new ISSSTEEntities())
            {
                if (DateTime.Now.Month == 12 || DateTime.Now.Month == 11)
                {
                    var unidades = await(from a in modelo.UnidadAtencion
                                         where a.ReiniciarContador == false
                                         select a).ToListAsync();

                    foreach (var unidad in unidades)
                    {
                        unidad.ReiniciarContador = true;
                    }

                    await modelo.SaveChangesAsync();
                }
                else if (DateTime.Now.Month == 1 || DateTime.Now.Month == 2)
                {
                    var unidades = (from a in modelo.UnidadAtencion
                                    where a.ReiniciarContador
                                    select a).ToList();

                    foreach (var unidad in unidades)
                    {
                        unidad.ReiniciarContador = false;
                        unidad.Contador          = 1;
                    }

                    await modelo.SaveChangesAsync();
                }
            }
        }
Пример #10
0
        public async Task <int> ActulizarEstadoCita(int SolicitudId, int StatusId)
        {
            using (var context = new ISSSTEEntities())
            {
                var result = await context.Solicitud
                             .Where(S => S.SolicitudId == SolicitudId)
                             .FirstOrDefaultAsync();

                result.CatTipoEdoCitaId = StatusId;

                return(await context.SaveChangesAsync());
            }
        }
        /// <summary>
        ///     Actualización del lenguaje ciudadano
        /// </summary>
        /// <param name="SettingDetail"></param>
        /// <returns></returns>
        public async Task <int> ActualizacionLenguajeCiudadano(CatalogoResultDTO SettingDetail)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var resultado =
                    await modelo.LenguajeCiudadano
                    .Where(S => S.LenguajeCiudadanoId == SettingDetail.CatalogoId)
                    .FirstOrDefaultAsync();

                resultado.Region   = SettingDetail.Concepto;
                resultado.Concepto = SettingDetail.Valor;

                return(await modelo.SaveChangesAsync());
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="DetalleTramiteUnidad"></param>
        /// <returns></returns>
        public async Task <int> AgregarOActualizarTramiteUnidadAtencion(TramiteUnidadAtencionDTO DetalleTramiteUnidad)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var resultado = new TramiteUnidadAtencion
                {
                    TramiteUnidadAtencionId = DetalleTramiteUnidad.TramiteUnidadAtencionId,
                    CatTipoTramiteId        = DetalleTramiteUnidad.CatTipoTramiteId,
                    UnidadAtencionId        = DetalleTramiteUnidad.UnidadAtencionId,
                    EsActivo = DetalleTramiteUnidad.EsActivo
                };

                modelo.TramiteUnidadAtencion.AddOrUpdate(resultado);

                return(await modelo.SaveChangesAsync());
            }
        }
        /// <summary>
        ///     Elimina el horario que haya sido removido de la lista
        /// </summary>
        /// <param name="SolicitudId"></param>
        /// <param name="UnidadAtencionId"></param>
        /// <param name="HorarioInicio"></param>
        /// <param name="CatTipoDiaSemanaId"></param>
        /// <param name="EsDiaEspecial"></param>
        /// <returns></returns>
        public async Task <int> EliminarHorarios(int?SolicitudId, int UnidadAtencionId, TimeSpan HorarioInicio,
                                                 int?CatTipoDiaSemanaId, bool EsDiaEspecial)
        {
            using (var context = new ISSSTEEntities())
            {
                var query = context.TramiteUnidadAtencion
                            .Where(S => S.UnidadAtencionId == UnidadAtencionId)
                            .AsQueryable();

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

                var tramitesUnidadesAtencion = query.ToList();


                tramitesUnidadesAtencion.ForEach(Tu =>
                {
                    var special =
                        context.Horario.FirstOrDefault(S => S.EsDiaEspecial == EsDiaEspecial &&
                                                       S.HoraInicio == HorarioInicio &&
                                                       S.CatTipoDiaSemanaId == CatTipoDiaSemanaId &&
                                                       S.TramiteUnidadAtencion.TramiteUnidadAtencionId ==
                                                       Tu.TramiteUnidadAtencionId);

                    if (special != null && special.Solicitud.Any())
                    {
                        special.EsActivo = false;

                        context.Horario.AddOrUpdate(special);
                    }
                    else
                    {
                        if (special != null)
                        {
                            context.Horario.Remove(special);
                        }
                    }
                });

                return(await context.SaveChangesAsync());
            }
        }
Пример #14
0
        /// <summary>
        ///     Actualización / Inserción de un requisito
        /// </summary>
        /// <param name="DetalleRequisito"></param>
        /// <returns></returns>
        public async Task <int> SalvarActualizarRequisito(RequisitoDTO DetalleRequisito)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var resultado = new Requisito
                {
                    RequisitoId      = DetalleRequisito.RequisitoId,
                    CatTipoTramiteId = DetalleRequisito.CatTipoTramiteId,
                    Descripcion      = DetalleRequisito.Descripcion,
                    NombreDocumento  = DetalleRequisito.NombreDocumento,
                    EsActivo         = DetalleRequisito.EsActivo,
                    EsObligatorio    = DetalleRequisito.EsObligatorio
                };

                modelo.Requisito.AddOrUpdate(resultado);
                return(await modelo.SaveChangesAsync());
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="AsignacionesTramiteUnidad"></param>
        /// <returns></returns>
        public async Task <int> AsignacionesTramiteUnidad(AsignacionesTramiteUnidadDTO AsignacionesTramiteUnidad)
        {
            using (var modelo = new ISSSTEEntities())
            {
                AsignacionesTramiteUnidad.UnidadesAsignadas.ForEach(S =>
                {
                    var asignacion = modelo.TramiteUnidadAtencion.FirstOrDefault(
                        Tu => Tu.CatTipoTramiteId == AsignacionesTramiteUnidad.CatTipoTramiteId &&
                        Tu.UnidadAtencionId == S.UnidadAtencionId);

                    if (asignacion != null)
                    {
                        asignacion.EsActivo = true;
                    }
                    else
                    {
                        var resultado = new TramiteUnidadAtencion
                        {
                            CatTipoTramiteId = AsignacionesTramiteUnidad.CatTipoTramiteId,
                            UnidadAtencionId = S.UnidadAtencionId,
                            EsActivo         = true
                        };

                        modelo.TramiteUnidadAtencion.Add(resultado);
                    }
                });

                AsignacionesTramiteUnidad.UnidadesNoAsignadas.ForEach(S =>
                {
                    var desasignar = modelo.TramiteUnidadAtencion
                                     .Where(Tu => Tu.CatTipoTramiteId == AsignacionesTramiteUnidad.CatTipoTramiteId &&
                                            Tu.UnidadAtencionId == S.UnidadAtencionId)
                                     .ToList();

                    desasignar.ForEach(D => { D.EsActivo = false; });
                });
                return(await modelo.SaveChangesAsync());
            }
        }
Пример #16
0
        public async Task <bool> DesbloquearUsuarioPorSolicitudId(int RequestId)
        {
            using (var context = new ISSSTEEntities())
            {
                var result = await context.Solicitud
                             .Where(sol => sol.SolicitudId == RequestId)
                             .Join(context.Involucrado,
                                   Req => Req.SolicitudId, Inv => Inv.SolicitudId,
                                   (Req, Inv) => Inv)
                             .Join(context.Persona,
                                   Inv => Inv.PersonaId, Per => Per.PersonaId,
                                   (Inv, Per) => new { inv = Inv, per = Per })
                             .Where(S => S.inv.CatTipoInvolucradoId == Enumeracion.EnumTipoInvolucrado.Paciente)
                             .FirstOrDefaultAsync();

                result.per.EsUsuarioBloqueado = false;
                result.per.FechaDesbloqueo    = DateTime.Now;

                await context.SaveChangesAsync();

                return(true);
            }
        }
        public async Task <int> GuardaDiasNoLaboralesOEspecialesAsync(List <HorarioDiaEspecialDTO> SpecialDays)
        {
            using (var context = new ISSSTEEntities())
            {
                SpecialDays.ForEach(Dia =>
                {
                    if (!Dia.IsNonWorking && Dia.IsOverrided)
                    {
                        var diasEspecialNuevo = new DiaEspecial
                        {
                            EsActivo = true,
                            Fecha    = Dia.Date,
                            Concepto = "sin Concepto"
                        };


                        var resultadoDiaEspecial = context.DiaEspecial.FirstOrDefault(S => S.Fecha == Dia.Date);

                        if (resultadoDiaEspecial == null)
                        {
                            context.DiaEspecial.Add(diasEspecialNuevo);
                        }
                        else
                        {
                            diasEspecialNuevo.DiaEspecialId = resultadoDiaEspecial.DiaEspecialId;
                            context.DiaEspecial.AddOrUpdate(diasEspecialNuevo);
                        }
                    }
                    else if (Dia.IsNonWorking)
                    {
                        var query = context.TramiteUnidadAtencion
                                    .Where(S => S.UnidadAtencionId == Dia.DelegationId)
                                    .AsQueryable();

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

                        var tramitesUnidadesAtencion = query.ToList();


                        tramitesUnidadesAtencion.ForEach(Tu =>
                        {
                            var diaNoLaborable = new DiaNoLaborable
                            {
                                EsActivo = true,
                                Fecha    = Dia.Date,
                                TramiteUnidadAtencionId = Tu.TramiteUnidadAtencionId
                            };

                            var resuldatoDia =
                                context.DiaNoLaborable.FirstOrDefault(
                                    S => S.Fecha == Dia.Date &&
                                    S.TramiteUnidadAtencionId == Tu.TramiteUnidadAtencionId);

                            if (resuldatoDia == null)
                            {
                                context.DiaNoLaborable.Add(diaNoLaborable);
                            }
                            else
                            {
                                diaNoLaborable.DiaNoLaborableId = resuldatoDia.DiaNoLaborableId;
                                context.DiaNoLaborable.AddOrUpdate(diaNoLaborable);
                            }
                        });
                    }
                });


                return(await context.SaveChangesAsync());
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="DetalleUnidadAtencion"></param>
        /// <returns></returns>
        /// <exception cref="QuejasMedicasException"></exception>
        public async Task <int> AgregarOActualizar(UnidadAtencionDTO DetalleUnidadAtencion)
        {
            using (var modelo = new ISSSTEEntities())
            {
                var existeConcepto =
                    modelo.UnidadAtencion.FirstOrDefault(
                        S => S.Descripcion.Equals(DetalleUnidadAtencion.Descripcion) &&
                        S.UnidadAtencionId != DetalleUnidadAtencion.UnidadAtencionId);

                if (existeConcepto != null)
                {
                    throw new QuejasMedicasException(string.Format(EnumConstErrores.ErrorConceptoYaExiste,
                                                                   "Nombre de la Unidad de Atencón"));
                }

                var resultado = new UnidadAtencion
                {
                    UnidadAtencionId = DetalleUnidadAtencion.UnidadAtencionId,
                    Descripcion      = DetalleUnidadAtencion.Descripcion,
                    Prefijo          = DetalleUnidadAtencion.Prefijo,
                    Mascara          = DetalleUnidadAtencion.Mascara,
                    EsActivo         = DetalleUnidadAtencion.EsActivo,
                    CatTipoEntidadId = DetalleUnidadAtencion.CatTipoEntidadId
                };

                if (DetalleUnidadAtencion.DomicilioId != null && DetalleUnidadAtencion.DomicilioId != 0)
                {
                    var domicilio = await modelo.Domicilio
                                    .Where(S => S.DomicilioId == DetalleUnidadAtencion.DomicilioId)
                                    .FirstOrDefaultAsync();

                    if (domicilio != null)
                    {
                        resultado.DomicilioId    = DetalleUnidadAtencion.DomicilioId;
                        domicilio.Calle          = DetalleUnidadAtencion.Calle;
                        domicilio.NumeroExterior = DetalleUnidadAtencion.NumeroExterior;
                        domicilio.NumeroInterior = DetalleUnidadAtencion.NumeroInterior;
                        domicilio.CodigoPostal   = DetalleUnidadAtencion.CodigoPostal;
                        domicilio.Colonia        = DetalleUnidadAtencion.Colonia;
                        domicilio.Municipio      = DetalleUnidadAtencion.Municipio;
                    }
                }
                else
                {
                    var domicilio = new Domicilio
                    {
                        Calle          = DetalleUnidadAtencion.Calle,
                        NumeroExterior = DetalleUnidadAtencion.NumeroExterior,
                        NumeroInterior = DetalleUnidadAtencion.NumeroInterior,
                        CodigoPostal   = DetalleUnidadAtencion.CodigoPostal,
                        Colonia        = DetalleUnidadAtencion.Colonia,
                        Municipio      = DetalleUnidadAtencion.Municipio,
                        EsActivo       = true
                    };

                    modelo.Domicilio.Add(domicilio);

                    await modelo.SaveChangesAsync();

                    resultado.DomicilioId = domicilio.DomicilioId;
                }

                modelo.UnidadAtencion.AddOrUpdate(resultado);

                return(await modelo.SaveChangesAsync());
            }
        }