public frmQuestionFormEdit(QuestionForm form)
 {
     // Required for Windows Form Designer support
       InitializeComponent();
       m_QuestionForm = form;
       m_QuestionFormID = form.ID;
 }
 // -------------------------------------------------------------------------------------
 /// <summary>
 /// Copy constructor.
 /// </summary>
 /// <param name="origInstance">Original document data to copy.</param>
 // -------------------------------------------------------------------------------------
 public QuestionForm(QuestionForm origInstance)
     : base(origInstance)
 {
 }
        private void ExportRtf()
        {
            try
              {
            string rtf = @"";

            #region lekérdezzük a ProgramContainer -t (a szûrési feltételeknek megfelelõen)

            // Build filter document:
            Guid templateGuid = new Guid(cmbTemplate.SelectedValue);
            TemplateControl1.SetAnswer();
            QuestionForm form = new QuestionForm(Guid.NewGuid());
            form.TemplateRef = templateGuid;
            foreach (IQuestion question in TemplateControl1.Questions)
            {
              TemplateDetail detail = (TemplateDetail) question;
              if (detail.Answer.Trim().Length > 0)
              {
            QuestionFormDetail questionDetail = new QuestionFormDetail(form.ID, detail.ID, templateGuid);
            questionDetail.Answer = detail.Answer;
            form.Details.Add(questionDetail);
              }
            }

            // Get query result from database
            IProgramService srv = ServiceFactory.GetProgramService();
            DataSet selected = srv.ProgramSelectByQuestionFormForRtf(form);

            #endregion

            DataTable dt = selected.Tables[0];
            if (dt != null && dt.Rows.Count > 0)
            {
              //dt = Helper.DataTableTypeMakeString(dt);

              #region Jogosultság ellenörzés

              int publicityLevel = -1;
              Guid ownOrgID = Guid.Empty;

              publicityLevel = PublicityLevel.Public;

              if (Context.User.Identity.IsAuthenticated)
              {
            NdiPrincipal principal = (NdiPrincipal) Context.User;

            // be van lépve a júzer
            ownOrgID = principal.OrganisationID;

            if (principal.IsInRole("Registered"))
            {
              publicityLevel = PublicityLevel.RegisteredOnly;
            }
              }

              #endregion

              rtf = Helpers.CreateRtfFromPrograms(dt, Server.MapPath(""), publicityLevel, ownOrgID);

              // Writes result to response
              Helpers.DownloadFile(rtf, "Programok.rtf");
            }
            else lblNotFound.Visible = true;
              }
              catch (Exception ex)
              {
            errorPanel.Exception = ex;
              }
        }
 // -------------------------------------------------------------------------------------
 /// <summary>
 /// Copy constructor.
 /// </summary>
 /// <param name="IDVal">Value of 'uID' field</param>
 /// <param name="origInstance">Original document data to copy.</param>
 // -------------------------------------------------------------------------------------
 public QuestionForm(DBGuid IDVal,
                 QuestionForm origInstance)
     : base(IDVal, origInstance)
 {
 }
        protected void ShowGrid(DataGrid dataGrid, int index, string sort, string order)
        {
            dataGrid.PageSize = Helpers.GetPageSize("PageSize.ProgramList");

              if (cmbTemplate.SelectedValue.ToString() == "")
              {
            btn_Search.Visible = false;
            btn_ExportCsv.Visible = false;
            btn_ExportRtf.Visible = false;
            btn_SearchClear.Visible = false;
            return;
              }
              // Build filter document:
              Guid templateGuid = new Guid(cmbTemplate.SelectedValue);
              TemplateControl1.SetAnswer();
              QuestionForm form = new QuestionForm(Guid.NewGuid());
              form.TemplateRef = templateGuid;
              foreach (IQuestion question in TemplateControl1.Questions)
              {
            TemplateDetail detail = (TemplateDetail) question;
            string ans = detail.Answer.Trim();
            if (ans.Length > 0)
            {
              if (!ans.Equals("-- Összes --"))
              {
            QuestionFormDetail questionDetail = new QuestionFormDetail(form.ID, detail.ID, templateGuid);
            questionDetail.Answer = ans;
            form.Details.Add(questionDetail);
              }
            }
              }

              // Get query result from database
              IProgramService srv = ServiceFactory.GetProgramService();
              ProgramContainer selected = srv.ProgramSelectByQuestionForm(form);

              if (selected.AllCount > 0)
              {
            dataGrid.Visible = true;
            lblNotFound.Visible = false;
              }
              else
              {
            dataGrid.Visible = false;
            lblNotFound.Visible = true;
            return;
              }

              ArrayList sortableList = null;
              // Sort if necessary
              if (sort == null)
              {
            sortableList = selected.All.Items;
              }
              else
              {
            if (String.Compare(order, "Ascending", true) == 0)
            {
              sortableList = selected.All.SortBy(sort, true);
            }
            else if (String.Compare(order, "Descending", true) == 0)
            {
              sortableList = selected.All.SortBy(sort, false);
            }
            else
            {
              sortableList = selected.All.SortBy(sort);
            }
              }

              // Bind list to datagrid control
              dataGrid.CurrentPageIndex = index;
              dataGrid.CurrentSortExpression = sort;
              dataGrid.CurrentSortOrder = order;
              dataGrid.DataSource = sortableList;
              dataGrid.DataBind();
        }
        private void ExportCsv()
        {
            try
              {
            #region lekérdezzük a ProgramContainer -t (a szûrési feltételeknek megfelelõen)

            // Build filter document:
            Guid templateGuid = new Guid(cmbTemplate.SelectedValue);
            TemplateControl1.SetAnswer();
            QuestionForm form = new QuestionForm(Guid.NewGuid());
            form.TemplateRef = templateGuid;
            foreach (IQuestion question in TemplateControl1.Questions)
            {
              TemplateDetail detail = (TemplateDetail) question;
              if (detail.Answer.Trim().Length > 0)
              {
            QuestionFormDetail questionDetail = new QuestionFormDetail(form.ID, detail.ID, templateGuid);
            questionDetail.Answer = detail.Answer;
            form.Details.Add(questionDetail);
              }
            }

            // Get query result from database
            IProgramService srv = ServiceFactory.GetProgramService();
            //ProgramContainer selected = srv.ProgramSelectByQuestionForm(form);

            #endregion

            #region Jogosultság ellenörzés

            int publicityLevel = -1;
            Guid ownOrgID = Guid.Empty;

            publicityLevel = PublicityLevel.Public;

            if (Context.User.Identity.IsAuthenticated)
            {
              NdiPrincipal principal = (NdiPrincipal) Context.User;

              // be van lépve a júzer
              ownOrgID = principal.OrganisationID;

              if (principal.IsInRole("Registered"))
              {
            publicityLevel = PublicityLevel.RegisteredOnly;
              }
            }

            #endregion

            // Writes result to response
            //string csv = selected.ExportToCsv(publicityLevel, ownOrgID);
            string csv = srv.CreateCsvFromProgramsForQuestion(form, publicityLevel, ownOrgID);

            Helpers.DownloadFile(csv, "programok.csv");
              }
              catch (Exception ex)
              {
            errorPanel.Exception = ex;
              }
        }
        public bool PendingQuestionFormAcceptNew(PendingQuestionForm entity)
        {
            //Check permission: Admin
              PrincipalPermission permissionAdm =
            new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, "Administrator");
              permissionAdm.Demand();

              TraceCallEnterEvent.Raise();
              try
              {
            //Check required fields
            if (entity.ID.IsNull)
              throw new ArgumentNullException("PendingQuestionForm.ID", "Az elbírálandó kérdõív azonosítója nincs megadva.");
            if (entity.ProgramCategoryId.Length == 0)
              throw new ArgumentNullException("PendingQuestionForm.ProgramCategoryId",
                                          "Az elbírálandó kérdõív kategóriája nincs megadva.");
            if (entity.TemplateRef.IsNull)
              throw new ArgumentNullException("PendingQuestionForm.TemplateRef", "A sablon azonosítója nincs megadva.");
            if (entity.Details.AllCount == 0)
              throw new ArgumentNullException("PendingQuestionForm.Details", "A válaszok nincsenek megadva.");
            if (entity.ProgramCategoryId.Equals("ORG"))
            {
              if (entity.OrganisationID.IsNull)
            throw new ArgumentNullException("PendingQuestionForm.OrganisationID",
                                            "A szervezet azonosítója nincs megadva.");
            }
            else
            {
              if (entity.ProgramID.IsNull)
            throw new ArgumentNullException("PendingQuestionForm.ProgramID", "A program azonosítója nincs megadva.");
            }

            // Logical checks:
            PendingQuestionForm selected = base.PendingQuestionFormSelect(entity.ID);
            if (selected == null)
              throw new ApplicationException("A megadott azonosítóval nem létezik elbírálandó kérdõív.");
            if (!selected.Status.Equals(QuestionFormStatus.New_WaitingForDecision))
              throw new ApplicationException("Csak jóváhagyásra váró státuszú kérdõív bírálható el.");

            // Set properties
            DBGuid questionFormID = Guid.NewGuid();
            QuestionForm questionForm = new QuestionForm(questionFormID);
            questionForm.TemplateRef = entity.TemplateRef;

            selected.DecidedBy = Thread.CurrentPrincipal.Identity.Name;
            selected.DecidedDate = DBDateTime.Now;
            selected.Status = QuestionFormStatus.New_Accepted;
            selected.QuestionFormRef = questionFormID;
            selected.IsActual = true;
            //utolsó módosítás, és elfogadás dátuma
            questionForm.LastModifiedDate = selected.SentDate;
            questionForm.DecidedDate = selected.DecidedDate;
            questionForm.LastModifiedByUser = selected.LastModifiedByUser;
            questionForm.IsActual = true;
            //Set mail:
            string modifiedAnswers = "";
            PendingQuestionFormDetailContainer origAnswers = base.SelectChildrenByDetailOfPendingQuestionForm(entity.ID);
            TemplateDetailService templateDetailService = new TemplateDetailService(m_DataContext);
            foreach (PendingQuestionFormDetail origDetail in origAnswers.All)
            {
              string hash = origDetail.HashString();
              PendingQuestionFormDetail currentDetail = (PendingQuestionFormDetail) entity.Details[hash];
              if (currentDetail != null)
              {
            if (!origDetail.Answer.Equals(currentDetail.Answer))
            {
              TemplateDetail question =
                templateDetailService.TemplateDetailSelect(origDetail.TemplateDetailRef, origDetail.TemplateRef);
              modifiedAnswers += "Kérdés:  " + question.Question + "\n";
              modifiedAnswers += "  Eredeti válasz:    " + origDetail.Answer + "\n";
              modifiedAnswers += "  Módosított válasz: " + currentDetail.Answer + "\n\n";
            }
              }
            }
            if (modifiedAnswers.Length == 0)
            {
              modifiedAnswers = "  A jóváhagyó módosítás nélkül fogadta el a kitöltött kérdõívet.\n";
            }

            UserService userSrv = new UserService(m_DataContext);
            User sentBy = userSrv.UserSelect(selected.SentBy);
            Email mail = new Email(Guid.NewGuid());
            mail.Category = EmailCategory.QuestionFormInsertAccept;
            mail.To = sentBy.Email;

            //Subject és body lekérdezése
            string body = "";
            string subject = "";
            EmailTemplateService srvTemplate = new EmailTemplateService();
            srvTemplate.GetEmailTemplateByCode(ref subject, ref body, EmailCategory.QuestionFormInsertAccept);

            mail.Subject = subject;

            body = body.Replace("<FULL_USER_NAME>", sentBy.Name);
            body = body.Replace("<SENT_DATE>", entity.SentDate.ToString());
            body = body.Replace("<TEMPLATE_NAME>", entity.TemplateName);
            body = body.Replace("<MODIFIED_ANSWERS>", modifiedAnswers);
            mail.MailBody = body;

            // Save data to database
            EmailService emailSrv = new EmailService(m_DataContext);
            QuestionFormService questionFormService = new QuestionFormService(m_DataContext);
            ProgramQuestionFormService programQuestionFormService = new ProgramQuestionFormService(m_DataContext);
            OrganisationQuestionFormService organisationQuestionFormService =
              new OrganisationQuestionFormService(m_DataContext);
            QuestionFormDetailService questionFormDetailService = new QuestionFormDetailService(m_DataContext);
            m_DataContext.BeginNestedTran();
            try
            {
              questionFormService.QuestionFormInsert(questionForm);
              base.PendingQuestionFormUpdate(selected);

              if (entity.ProgramCategoryId.Equals("ORG"))
              {
            OrganisationQuestionForm organisationQuestionForm =
              new OrganisationQuestionForm("ORG", entity.OrganisationID, questionFormID);

            //organisationQuestionForm.QuestionFormRef = questionFormID;
            organisationQuestionFormService.OrganisationQuestionFormInsert(organisationQuestionForm);
              }
              else
              {
            ProgramQuestionForm programQuestionForm =
              new ProgramQuestionForm(entity.ProgramCategoryId, entity.ProgramID, questionFormID);
            //programQuestionForm.QuestionFormRef = questionFormID;
            programQuestionFormService.ProgramQuestionFormInsert(programQuestionForm);
              }

              foreach (PendingQuestionFormDetail pendingDetail in entity.Details.All)
              {
            QuestionFormDetail detail =
              new QuestionFormDetail(questionFormID, pendingDetail.TemplateDetailRef, entity.TemplateRef);
            detail.Answer = pendingDetail.Answer;
            detail.FreetextId = Guid.NewGuid();
            questionFormDetailService.QuestionFormDetailInsert(detail);
              }

              emailSrv.EmailInsert(mail);
              m_DataContext.CommitNested();
            }
            catch
            {
              m_DataContext.RollbackNested();
              throw;
            }

            // Sending mail:
            try
            {
              emailSrv.EmailSend(mail.ID);
            }
            catch (Exception ex)
            {
              ExceptionManager.Publish(ex);
              return false;
            }

            // Log success
            BusinessAuditEvent.Success(
              new EventParameter("PendingQuestionFormID", entity.ID.ToString()),
              new EventParameter("ProgramID", entity.ProgramID.ToString()),
              new EventParameter("OrganisationID", entity.OrganisationID.ToString())
              );
            TraceCallReturnEvent.Raise();
            return true;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            BusinessAuditEvent.Fail(
              new EventParameter("Exception", ex.ToString()),
              new EventParameter("PendingQuestionFormID", entity.ID.ToString()),
              new EventParameter("ProgramID", entity.ProgramID.ToString()),
              new EventParameter("OrganisationID", entity.OrganisationID.ToString())
              );
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }
        public QuestionFormContainer QuestionFormSelectFiltered(QuestionForm filter)
        {
            TraceCallEnterEvent.Raise();
              try
              {
            if (filter.ProgramCategoryId.IsNull)
              throw new ArgumentNullException("filter.ProgramCategoryId", "A program kategória nincs megadva.");

            QuestionFormContainer result;
            if (filter.ProgramCategoryId.Equals("ORG"))
            {
              DataSet entitySet = m_DataContext.ndihdQuestionFormOfOrganisationSelectFiltered(
            filter.OrganisationID,
            "ORG",
            filter.TemplateRef);
              result = new QuestionFormContainer(entitySet.Tables[0]);
            }
            else
            {
              DataSet entitySet = m_DataContext.ndihdQuestionFormOfProgramSelectFiltered(
            filter.ProgramID,
            filter.OrganisationID,
            filter.ProgramCategoryId,
            filter.TemplateRef);
              result = new QuestionFormContainer(entitySet.Tables[0]);
            }
            TraceCallReturnEvent.Raise();
            return result;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }
 public virtual QuestionForm QuestionFormSelect(DBGuid IDVal)
 {
     TraceCallEnterEvent.Raise();
       try
       {
     QuestionForm result = null;
     DataSet entitySet = m_DataContext.ndihdQuestionFormSelect(IDVal);
     if (entitySet.Tables[0].Rows.Count != 0)
     {
       result = new QuestionForm(entitySet);
     }
     TraceCallReturnEvent.Raise();
     return result;
       }
       catch (Exception ex)
       {
     ExceptionManager.Publish(ex);
     TraceCallReturnEvent.Raise(false);
     throw;
       }
 }
 public virtual void QuestionFormUpdate(QuestionForm entity)
 {
     TraceCallEnterEvent.Raise();
       try
       {
     m_DataContext.BeginNestedTran();
     try
     {
       int count;
       m_DataContext.ndihdQuestionFormUpdate(entity.ID,
     entity.TemplateRef,
     entity.LastModifiedDate,
     entity.DecidedDate,
     entity.IsActual,
     entity.LastModifiedByUser,
     entity.LastValidationDate, out count);
       if (count == 0) throw new ServiceUpdateException();
       m_DataContext.CommitNested();
     }
     catch
     {
       m_DataContext.RollbackNested();
       throw;
     }
     TraceCallReturnEvent.Raise();
     return;
       }
       catch (Exception ex)
       {
     ExceptionManager.Publish(ex);
     TraceCallReturnEvent.Raise(false);
     throw;
       }
 }
 public virtual void QuestionFormDelete(QuestionForm entity)
 {
     TraceCallEnterEvent.Raise();
       try
       {
     m_DataContext.BeginNestedTran();
     try
     {
       m_DataContext.ndihdQuestionFormDelete(entity.ID);
       m_DataContext.CommitNested();
     }
     catch
     {
       m_DataContext.RollbackNested();
       throw;
     }
     TraceCallReturnEvent.Raise();
     return;
       }
       catch (Exception ex)
       {
     ExceptionManager.Publish(ex);
     TraceCallReturnEvent.Raise(false);
     throw;
       }
 }
        // -------------------------------------------------------------------------------------
        /// <summary>
        /// Fill datagrid with data
        /// </summary>
        // -------------------------------------------------------------------------------------
        private void FillDatagrid(DBGuid ID)
        {
            try
              {
            string sortColumn = "OrganisationName";
            int selectedRow = -1;

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

            // retrieving data from BusinessServices
            QuestionForm filter = new QuestionForm(Guid.NewGuid());
            if (cmbCategory.SelectedIndex > 0)
            {
              filter.ProgramCategoryId = cmbCategory.SelectedValue.ToString();
            }
            else
            {
              filter.ProgramCategoryId = "";
            }
            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;
            }
            if (cmbTemplate.SelectedValue.ToString().Length > 0)
            {
              Guid templId = new Guid(cmbTemplate.SelectedValue.ToString());
              filter.TemplateRef = templId;
            }

            IQuestionFormService qfSrv = ServiceFactory.GetQuestionFormService();
            m_QuestionFormContainer = qfSrv.QuestionFormSelectFiltered(filter);
            DataTable dt = m_QuestionFormContainer.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.
            tbbModify.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 DataSet ProgramSelectByQuestionFormForRtf(QuestionForm filter)
        {
            TraceCallEnterEvent.Raise();
              try
              {
            string answers = "";
            if (filter.Details.AllCount == 0)
              throw new ApplicationException("Legalább egy keresési feltételt meg kell adni.");

            foreach (QuestionFormDetail detail in filter.Details.All)
            {
              if (answers.Length > 0)
              {
            answers += " and ";
              }
              answers += " [cTemplateDetailRef] = '" + detail.TemplateDetailRef + "' ";
              string ans = detail.Answer;
              ans = ans.Replace("*", "%");
              ans = ans.Replace("?", "_");

              answers += " and [cAnswer] like '" + ans + "' ";
            }

            DataSet entitySet = m_DataContext.ndihdProgramSelectByQuestionFormForRtf(
              filter.TemplateRef,
              answers);

            TraceCallReturnEvent.Raise();
            return entitySet;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }
 /// <summary>
 /// Exports to CSV2.
 /// </summary>
 /// <param name="form">The form.</param>
 /// <param name="publicityLevel">The publicity level.</param>
 /// <param name="ownOrgId">The own org id.</param>
 /// <returns></returns>
 public string CreateCsvFromProgramsForQuestion(QuestionForm form, int publicityLevel, Guid ownOrgId)
 {
     DataSet ds = ProgramSelectByQuestionFormForCsv(form);
       DataTable dt = ds.Tables[0];
       return CreateCsvFromPrograms(dt, publicityLevel, ownOrgId);
 }
        private void cmdSave_Click(object sender, EventArgs e)
        {
            TemplateControl1.SetAnswer();

              // --- Save questionform
              Guid templateID = new Guid(comboBox1.SelectedItem.ToString());
              QuestionForm form = new QuestionForm(Guid.NewGuid());
              form.TemplateRef = templateID;
              IQuestionFormService formSrv = ServiceFactory.GetQuestionFormService();
              formSrv.QuestionFormInsert(form);

              // --- Save questiondetails
              IQuestionFormDetailService questionFormDetailService = ServiceFactory.GetQuestionFormDetailService();
              foreach (IQuestion question in TemplateControl1.Questions)
              {
            TemplateDetail detail = (TemplateDetail) question;
            QuestionFormDetail questionDetail = new QuestionFormDetail(form.ID, detail.ID, templateID);
            questionDetail.Answer = detail.Answer;
            questionFormDetailService.QuestionFormDetailInsert(questionDetail);
              }

              GetList();
        }