public RequestResultDTO()
 {
     Paciente           = new PersonaDTO();
     Promovente         = new PersonaDTO();
     Cita               = new CitaDTO();
     UnidadAtencion     = new UnidadAtencionDTO();
     EsUsuarioBloqueado = false;
     Folio              = string.Empty;
     SolicitudId        = default(int);
 }
        /// <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());
            }
        }