/// <summary>
        ///  Retorna lista  <see cref="HealthInstitutions_SuscriptionRequestsList"/> con solo id , nombre + datos de la subscripción
        /// </summary>
        /// <param name="healthInstituteId"></param>
        /// <returns></returns>
        internal static HealthInstitutions_SuscriptionRequestsList Retrive_Subscriptions_SimpleList(Guid healthInstituteId)
        {
            HealthInstitutions_SuscriptionRequestsList wProfesionalsBEList = new HealthInstitutions_SuscriptionRequestsList();

            using (HealthLinQDataContext dc = new HealthLinQDataContext(Common.CnnString))
            {
                var AllProfesionals = from p in dc.HealthInstitutions_SuscriptionRequests
                                      from prof in dc.Profesionals
                                      where

                                      p.HealthInstitutionId.Equals(healthInstituteId) &&
                                      prof.IdProfesional.Equals(p.Profesional_To)
                                      select new HealthInstitutions_SuscriptionRequestsBE
                {
                    Profesional_To = prof.IdProfesional,
                    Nombre_To      = prof.Persona.Nombre,
                    Apellido_To    = prof.Persona.Apellido,
                    RequestSend    = p.RequestSend,
                    Status         = p.State,
                    Message        = p.Message
                };


                wProfesionalsBEList.AddRange(AllProfesionals.ToList <HealthInstitutions_SuscriptionRequestsBE>());
            }
            return(wProfesionalsBEList);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pHealthInstitutionId"></param>
        /// <param name="pIdProfesional_To"></param>
        /// <param name="status"></param>
        public static void Update_Subscriptions_Status(Guid pHealthInstitutionId, int pIdProfesional_To, SubscriptionRequestStatus status)
        {
            HealthInstitutions_SuscriptionRequestsList wProfesionalsBEList = new HealthInstitutions_SuscriptionRequestsList();

            using (HealthLinQDataContext dc = new HealthLinQDataContext(Common.CnnString))
            {
                var wSuscription = dc.HealthInstitutions_SuscriptionRequests.Where(p => p.Profesional_To.Equals(pIdProfesional_To) &&
                                                                                   p.HealthInstitutionId.Equals(p.HealthInstitutionId)).FirstOrDefault();

                wSuscription.State = (int)status;
                dc.SubmitChanges();
            }
        }
        internal static void Remove_SubscriptionReq(Guid pHealthInstitutionId, int pIdProfesional_To)
        {
            HealthInstitutions_SuscriptionRequestsList wProfesionalsBEList = new HealthInstitutions_SuscriptionRequestsList();

            using (HealthLinQDataContext dc = new HealthLinQDataContext(Common.CnnString))
            {
                var wSuscription = dc.HealthInstitutions_SuscriptionRequests.Where(p => p.Profesional_To.Equals(pIdProfesional_To) &&
                                                                                   p.HealthInstitutionId.Equals(p.HealthInstitutionId)).FirstOrDefault();



                dc.HealthInstitutions_SuscriptionRequests.DeleteOnSubmit(wSuscription);
                dc.SubmitChanges();
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pHealthInstitutionId"></param>
        /// <param name="pIdProfesional_To"></param>
        /// <param name="status"></param>
        public static void Acept_Subscriptions_Req(Guid pHealthInstitutionId, int pIdProfesional_To, Guid user_guid)
        {
            HealthInstitutions_SuscriptionRequestsList wProfesionalsBEList = new HealthInstitutions_SuscriptionRequestsList();

            using (HealthLinQDataContext dc = new HealthLinQDataContext(Common.CnnString))
            {
                var wSuscription = dc.HealthInstitutions_SuscriptionRequests.Where(p => p.Profesional_To.Equals(pIdProfesional_To) &&
                                                                                   p.HealthInstitutionId.Equals(p.HealthInstitutionId)).FirstOrDefault();



                //Asociar el profecional
                Profesional_Associate_As_AdminOwner(pHealthInstitutionId, pIdProfesional_To, user_guid, wSuscription.RoleName);


                //Elimina la subscripcion
                dc.HealthInstitutions_SuscriptionRequests.DeleteOnSubmit(wSuscription);
                dc.SubmitChanges();
            }
        }
 /// <summary>
 /// Crea un pedido de subscripcion
 /// </summary>
 /// <param name="pProfesionalId_From"></param>
 /// <param name="pProfesionalId_To"></param>
 /// <param name="pHealthInstitutionId"></param>
 /// <param name="rolname"></param>
 /// <param name="msg"></param>
 public static void CreateSubscription_Req(int pProfesionalId_From, int pProfesionalId_To, Guid pHealthInstitutionId, string pRolName, string pMessage)
 {
     using (HealthLinQDataContext dc = new HealthLinQDataContext(Common.CnnString))
     {
         HealthInstitutions_SuscriptionRequest req = new HealthInstitutions_SuscriptionRequest();
         req.HealthInstitutionId = pHealthInstitutionId;
         req.Profesional_To      = pProfesionalId_To;
         req.ProfesionalId_From  = pProfesionalId_From;
         req.RequestSend         = DateTime.Now;
         if (!string.IsNullOrEmpty(pMessage))
         {
             req.Message = pMessage;
         }
         if (!string.IsNullOrEmpty(pRolName))
         {
             req.RoleName = pRolName;
         }
         dc.HealthInstitutions_SuscriptionRequests.InsertOnSubmit(req);
         dc.SubmitChanges();
     }
 }
        /// <summary>
        /// Lista usada para ver las solicitudes al profecional
        /// Retorna lista  <see cref="HealthInstitutions_SuscriptionRequestsList"/> con solo id , nombre + datos de la subscripción
        /// Se retorna Nombre y apellido es del usuario que solicita
        /// </summary>
        /// <param name="pIdProfesional">Id del profesional que desea ver sus solicitudes pendientes</param>
        /// <returns></returns>
        internal static HealthInstitutions_SuscriptionRequestsList Retrive_PendingSubscriptions_SimpleList(int pIdProfesional)
        {
            HealthInstitutions_SuscriptionRequestsList wProfesionalsBEList = new HealthInstitutions_SuscriptionRequestsList();

            using (HealthLinQDataContext dc = new HealthLinQDataContext(Common.CnnString))
            {
                var AllProfesionals = from p in dc.HealthInstitutions_SuscriptionRequests
                                      from h in dc.HealthInstitutions
                                      from prof_from in dc.Profesionals

                                      where

                                      p.Profesional_To.Equals(pIdProfesional) &&
                                      h.HealthInstitutionId.Equals(p.HealthInstitutionId) &&
                                      prof_from.IdProfesional.Equals(p.ProfesionalId_From)

                                      && !p.State.Equals(SubscriptionRequestStatus.Rechazado) &&
                                      !p.State.Equals(SubscriptionRequestStatus.Expirado)
                                      select new HealthInstitutions_SuscriptionRequestsBE
                {
                    Profesional_To   = p.Profesional_To,
                    Profesional_From = p.ProfesionalId_From,
                    Nombre_From      = prof_from.Persona.Nombre,
                    Apellido_From    = prof_from.Persona.Apellido,
                    RequestSend      = p.RequestSend,
                    Status           = p.State,
                    HealthInsId      = h.HealthInstitutionId,
                    HealthInstName   = h.RazonSocial,
                    SenderIsOwner    = p.SenderIsOwner,
                    Message          = p.Message
                };


                wProfesionalsBEList.AddRange(AllProfesionals.ToList <HealthInstitutions_SuscriptionRequestsBE>());
            }
            return(wProfesionalsBEList);
        }