// -------------------------------------------------------------------------------------
        /// <summary>
        /// Fill datagrid with data
        /// </summary>
        // -------------------------------------------------------------------------------------
        private void FillDatagrid(DBGuid ID)
        {
            try
              {
            string sortColumn = "SentDate";
            int selectedRow = -1;

            // storing the previous sort order
            if (dtgMain.DataSource != null)
            {
              sortColumn = ((DataTable) dtgMain.DataSource).DefaultView.Sort;
            }

            // retrieving data from BusinessServices
            PendingQuestionForm filter = new PendingQuestionForm(Guid.NewGuid());
            filter.ProgramCategoryId = cmbCategory.SelectedValue.ToString();
            filter.Status = cmbStatusFilter.SelectedValue.ToString();
            if (cmbProgram.SelectedValue.ToString().Length > 0)
            {
              Guid prgId = new Guid(cmbProgram.SelectedValue.ToString());
              filter.ProgramID = prgId;
            }
            if (cmbOrganisation.SelectedValue.ToString().Length > 0)
            {
              Guid orgId = new Guid(cmbOrganisation.SelectedValue.ToString());
              filter.OrganisationID = orgId;
            }

            IPendingQuestionFormService pendingSrv = ServiceFactory.GetPendingQuestionFormService();
            m_PendingQuestionFormContainer = pendingSrv.PendingQuestionFormSelectFiltered(filter);
            DataTable dt = m_PendingQuestionFormContainer.AllAsDatatable;
            dt.DefaultView.Sort = sortColumn;
            dtgMain.DataSource = dt;

            // locates the row specified by ID param
            if (!ID.IsNull)
            {
              BindingManagerBase bm = dtgMain.BindingContext[dtgMain.DataSource, dtgMain.DataMember];
              DataRow dr;
              for (int i = 0; i < bm.Count; i++)
              {
            dr = ((DataRowView) bm.Current).Row;
            if (ID.Value.Equals(dr["ID"]))
            {
              selectedRow = i;
              break;
            }
            bm.Position += 1;
              }
            }

            // makes the row selected
            if (selectedRow <= ((DataTable) dtgMain.DataSource).DefaultView.Count && selectedRow > -1)
            {
              dtgMain.Select(selectedRow);
              dtgMain.CurrentRowIndex = selectedRow;
            }
            else if (((DataTable) dtgMain.DataSource).DefaultView.Count != 0)
            {
              dtgMain.Select(0);
            }

            // enabling or disabling the buttons according to record count. And is because of previous disable state.
            tbbDecide.Enabled = (((DataTable) dtgMain.DataSource).DefaultView.Count != 0);
              }
              catch (Exception ex)
              {
            //	---	Log exception
            ExceptionManager.Publish(ex);
            //	---	Display Exception
            ErrorHandler.DisplayError("Nem várt hiba a lista frissítése során.", ex);
              }
        }
 public virtual PendingQuestionFormContainer SelectChildrenByPendingQuestionFormOfTemplate(DBGuid IDVal)
 {
     TraceCallEnterEvent.Raise();
       try
       {
     PendingQuestionFormContainer result;
     DataSet entitySet = m_DataContext.ndihdPendingQuestionFormOfTemplateSelectBy(IDVal);
     result = new PendingQuestionFormContainer(entitySet.Tables[0]);
     TraceCallReturnEvent.Raise();
     return result;
       }
       catch (Exception ex)
       {
     ExceptionManager.Publish(ex);
     TraceCallReturnEvent.Raise(false);
     throw;
       }
 }
        /// <summary>
        /// Programs the question form validate priv.
        /// </summary>
        /// <param name="org">The org.</param>
        /// <param name="prog">The prog.</param>
        /// <param name="referenceDate">The reference date.</param>
        /// <param name="refreshNum">The refresh num.</param>
        /// <param name="service">if set to <c>true</c> [service].</param>
        /// <returns></returns>
        private string ProgramQuestionFormValidatePriv(Organisation org, Program prog, DateTime referenceDate, int refreshNum, bool service)
        {
            string organisationState = org.ValidationState ?? "";
              var filter = new Template(DBGuid.Null)
                     {
                       PublicityLevel = 1,
                       FilterOnIsActive = 1,
                       FilterOnCategory = prog.ProgramCategoryRef
                     };

              //IOrganisationService organisationService = ServiceFactory.GetOrganisationService();
              ProgramService programService =  new ProgramService();
              PendingQuestionFormService pqfService = new PendingQuestionFormService();
              TemplateService templateSrv = new TemplateService();
              ProgramPendingQuestionFormContainer qfPendings =
            programService.SelectChildrenByPendingQuestionFormOfProgram(prog.ID);

              //Ezek azok a kérdőívek, amiknek ki kellene töltve lennie a programhoz
              TemplateContainer templSelectedOrg = templateSrv.TemplateSelectFiltered(filter);
              foreach (Template template in templSelectedOrg.All)
              {
            bool isFilled = false;
            var allPendingsToTemplate = new PendingQuestionFormContainer();
            // ebben a konténerben lesznek az ehhez a templatehez tartozó pendingek

            //megnézem van-e ilyen a szervezethez
            //ezek vannak kitöltve a szervezethez
            foreach (ProgramPendingQuestionForm qf in qfPendings.All)
            {
              //Az organisationhoz tartozóak a pendingben

              PendingQuestionForm pqf = pqfService.PendingQuestionFormSelect(qf.PendingQuestionFormRef);
              if (pqf != null && pqf.TemplateRef == template.ID /*&& pqf.Status != QuestionFormStatus.Updated_SendBack && pqf.Status != QuestionFormStatus.New_SendBack*/) // ki van töltve
              {
              //invaild státuszok
              if (pqf.Status.Equals(QuestionFormStatus.New) || pqf.Status.Equals(QuestionFormStatus.New_Rejected) ||
                  pqf.Status.Equals(QuestionFormStatus.New_SendBack) ||
                  pqf.Status.Equals(QuestionFormStatus.Updated) ||
                  pqf.Status.Equals(QuestionFormStatus.Updated_Rejected) ||
                  pqf.Status.Equals(QuestionFormStatus.Updated_SendBack))
              {
                  isFilled = false;
                  // Nincs kitöltve neki
                  if (organisationState == OrganisationValidate.IsValid || organisationState == "")
                  {
                      organisationState = OrganisationValidate.NoQuestionForm;
                  }
                  else
                  {
                      if (organisationState.IndexOf(OrganisationValidate.NoQuestionForm) < 0) //még nem írtam be ezt a hibát
                          organisationState += " " + OrganisationValidate.NoQuestionForm;
                  }
                  continue; //tovább a ciklusban, mert ezt elég egyszer beírni a státuszba
              }

                  isFilled = true;
                  //nincs még ilyen
                  if (allPendingsToTemplate[pqf.HashString()] == null)
                      allPendingsToTemplate.Add(pqf);

              }
            } // amikor ideérek, akkor az isFilled true, ha van ilyen kérdőív kitöltve a szervezethez
            //és a allPendingsToTemplate -ben benne van az összes pending ehhez a template-hez

            //amikor itt tartunk megvan az összes szervezethez  tartozó pendibgünk, ehhez a template-hoz
            if (allPendingsToTemplate.AllCount > 0)
            {
              //Ebből ki kell vennünk a legutolsót
              ArrayList allSorted = allPendingsToTemplate.All.SortBy("SentDate");
              //Itt egy sorrendezett listánk van
              //Kiveszem az utolsót, mert dátum szerint ezt kell nézni
              var validable = (PendingQuestionForm)allSorted[allSorted.Count - 1];
              //Mindig csak az utolsót kell validálni
              if (validable != null)
              {
            if (validable.Status.Equals(QuestionFormStatus.New_WaitingForDecision) ||
                validable.Status.Equals(QuestionFormStatus.Updated_WaitingForDecision))
            {
              continue; // végeztünk, mert jóváhagyásra váró kérdőíve van ehhez a template-hez
            }
            //megnézzük hogy jóváhagyottja van-e
            if (validable.Status.Equals(QuestionFormStatus.New_Accepted) ||
                validable.Status.Equals(QuestionFormStatus.Updated_Accepted))
            {
              if (service)
              {
                //van jóváhagyottja, akkor meg kell nézni, hogy az utplsó módosíás dátuma nem túl régi-e
                //if (referenceDate < (DateTime) validable.SentDate)
                {
                  // Túl régi ehhez a template-hoz
                  if (organisationState == OrganisationValidate.IsValid || organisationState == "")
                  {
                    organisationState = OrganisationValidate.NoQuestionFormRefresh;
                  }
                  else
                  {
                    if (organisationState.IndexOf(OrganisationValidate.NoQuestionFormRefresh) < 0)
                      //még nem írtam be ezt a hibát
                      organisationState += " " + OrganisationValidate.NoQuestionFormRefresh;
                  }
                }
              }
              else
              {
                //van jóváhagyottja, akkor meg kell nézni, hogy az utplsó módosíás dátuma nem túl régi-e
                if (referenceDate.AddDays(-(int)refreshNum) > (DateTime)validable.SentDate)
                {
                  // Túl régi ehhez a template-hoz
                  if (organisationState == OrganisationValidate.IsValid || organisationState == "")
                  {
                    organisationState = OrganisationValidate.NoQuestionFormRefresh;
                  }
                  else
                  {
                    if (organisationState.IndexOf(OrganisationValidate.NoQuestionFormRefresh) < 0)
                      //még nem írtam be ezt a hibát
                      organisationState += " " + OrganisationValidate.NoQuestionFormRefresh;
                  }
                }
              }
            }

            ////invaild státuszok
            //if (validable.Status.Equals(QuestionFormStatus.New) || validable.Status.Equals(QuestionFormStatus.New_Rejected) ||
            //    validable.Status.Equals(QuestionFormStatus.New_SendBack) ||
            //    validable.Status.Equals(QuestionFormStatus.Updated) ||
            //    validable.Status.Equals(QuestionFormStatus.Updated_Rejected) ||
            //    validable.Status.Equals(QuestionFormStatus.Updated_SendBack))
            //{
            //  isFilled = false;
            //}
              }
            }
            //nincs kitöltve
            if (!isFilled)
              if (organisationState == OrganisationValidate.IsValid || organisationState == "")
              {
            organisationState = OrganisationValidate.NoQuestionForm;
              }
              if (organisationState.IndexOf(OrganisationValidate.NoQuestionForm) < 0)
            //még nem írtam be ezt a hibát
            organisationState += " " + OrganisationValidate.NoQuestionForm;
              }
              //Mindig csak a legutolsó pendinget kell megnéznem. Ennek a státusza számít

              return organisationState;
        }
 public virtual PendingQuestionFormContainer PendingQuestionFormSelectAll()
 {
     TraceCallEnterEvent.Raise();
       try
       {
     PendingQuestionFormContainer result;
     DataSet entitySet = m_DataContext.ndihdPendingQuestionFormSelectAll();
     result = new PendingQuestionFormContainer(entitySet.Tables[0]);
     TraceCallReturnEvent.Raise();
     return result;
       }
       catch (Exception ex)
       {
     ExceptionManager.Publish(ex);
     TraceCallReturnEvent.Raise(false);
     throw;
       }
 }
        public PendingQuestionFormContainer PendingQuestionFormSelectFiltered(PendingQuestionForm filter)
        {
            TraceCallEnterEvent.Raise();
              try
              {
            if (filter.ProgramCategoryId.Length == 0)
              throw new ArgumentNullException("filter.ProgramCategoryId", "A program kategória nincs megadva.");

            PendingQuestionFormContainer result;
            if (filter.ProgramCategoryId.Equals("ORG"))
            {
              DataSet entitySet = m_DataContext.ndihdPendingQuestionFormOfOrganisationSelectFiltered(
            filter.OrganisationID,
            filter.Status,
            "ORG");
              result = new PendingQuestionFormContainer(entitySet.Tables[0]);
            }
            else
            {
              DataSet entitySet = m_DataContext.ndihdPendingQuestionFormOfProgramSelectFiltered(
            filter.ProgramID,
            filter.OrganisationID,
            filter.Status,
            filter.ProgramCategoryId);
              result = new PendingQuestionFormContainer(entitySet.Tables[0]);
            }
            TraceCallReturnEvent.Raise();
            return result;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }