Ejemplo n.º 1
0
        public new void TemplateUpdate(Template entity)
        {
            PrincipalPermission permAdmin = new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, "Administrator");
              permAdmin.Demand();

              TraceCallEnterEvent.Raise();
              try
              {
            //check required fields:
            if (entity.ID.IsNull) throw new ArgumentNullException("Template.ID", "A sablon azonosítója nincs megadva.");
            if (entity.Name.Length == 0) throw new ArgumentNullException("Template.Name", "A sablon neve nincs megadva.");
            if (entity.PublicityLevel.IsNull)
              throw new ArgumentNullException("Template.PublicityLevel", "A publikussági szint nincs megadva.");

            if (entity.Details == null)
              throw new ArgumentNullException("Template.Details", "A sablonhoz nincs egyetlen kérdés sem megadva.");
            if (entity.Details.CurrentCount == 0)
              throw new ArgumentNullException("Template.Details", "A sablonhoz nincs egyetlen kérdés sem megadva.");

            string p = PublicityLevel.GetNameById(entity.PublicityLevel.ToString());
            if (p == null)
              throw new ApplicationException("Érvénytelen publikussági szint érték.");

            Template selected = base.TemplateSelect(entity.ID);
            if (selected == null)
              throw new ApplicationException("A megadott azonosítóval nem létezik sablon.");

            // TODO: check pages

            //save data
            m_DataContext.BeginNestedTran();
            try
            {
              TemplateDetailService detailService = new TemplateDetailService(m_DataContext);
              TemplatePageService pageService = new TemplatePageService(m_DataContext);
              TemplateDetailContainer originalDetails = SelectChildrenByDetailOfTemplate(entity.ID);

              base.TemplateUpdate(entity);

              foreach (TemplateDetail detail in entity.Details.Current)
              {
            if (originalDetails[detail.HashString()] != null)
            {
              detailService.TemplateDetailUpdate(detail);
            }
            else
            {
              detailService.TemplateDetailInsert(detail);
            }
              }

              // replace pages:
              base.DeleteChildrenByPageOfTemplate(entity.ID);
              foreach (TemplatePage page in entity.Pages.Current)
              {
            pageService.TemplatePageInsert(page);
              }

              # region feltöltjük a szabadszöveges kereséshez a GlobalSearch táblát

              GlobalSearchService srvGlobalSearch = new GlobalSearchService(m_DataContext);

              DataSet ds = TemplateSelectPendingPrograms(entity.ID);
              DataTable dt = ds.Tables[0];

              foreach (DataRow dr in dt.Rows)
              {
            srvGlobalSearch.SaveProgram(new Guid(dr["uID"].ToString()));
              }

              #endregion

              m_DataContext.CommitNested();
            }
            catch
            {
              m_DataContext.RollbackNested();
              throw;
            }

            BusinessAuditEvent.Success(
              new EventParameter("TemplateID", entity.ID.ToString()),
              new EventParameter("TemplateName", entity.Name.ToString())
              );
            TraceCallReturnEvent.Raise();
            return;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            BusinessAuditEvent.Fail(
              new EventParameter("Exception", ex.ToString()),
              new EventParameter("TemplateID", entity.ID.ToString()),
              new EventParameter("TemplateName", entity.Name.ToString())
              );
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }
Ejemplo n.º 2
0
        public void ProgramUpdateAdmin(Program entity)
        {
            // Check permission: Admin
              PrincipalPermission permAdmin = new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, "Administrator");
              permAdmin.Demand();

              TraceCallEnterEvent.Raise();
              try
              {
            // Check required fields
            if (entity.Name.Length == 0) throw new ArgumentNullException("Program.Name", "A program neve nincs megadva.");
            if (entity.Description.Length == 0)
              throw new ArgumentNullException("Program.Description", "A program leírása nincs megadva.");
            if (entity.ProgramStatus.Length == 0)
              throw new ArgumentNullException("Program.ProgramStatus", "A program státusza nincs megadva.");

            // Logical checks
            Program selected = base.ProgramSelect(entity.ID);
            if (selected == null)
              throw new ApplicationException("Ezzel az azonosítóval nem létezik program.");

            if (CheckProgramExistByName(entity.Name, selected.OrganisationRef, entity.ID))
            {
              throw new ApplicationException("Ezzel a névvel már létezik program!");
            }

            // Save data
            selected.Name = entity.Name;
            selected.Description = entity.Description;
            selected.ProgramStatus = entity.ProgramStatus;
            selected.StartDate = entity.StartDate;
            selected.FinishDate = entity.FinishDate;
            selected.NonregisteredPartners = entity.NonregisteredPartners;
            selected.ResponsibleRef = entity.ResponsibleRef;
            selected.Coordinator1Ref = entity.Coordinator1Ref;
            selected.Coordinator2Ref = entity.Coordinator2Ref;
            selected.ProgramStatus = entity.ProgramStatus;
            selected.IsActive = entity.IsActive;

            m_DataContext.BeginNestedTran();
            try
            {
              // Program participant - delete and insert
              if (entity.Experts.AllCount > 0)
              {
            m_DataContext.ndihdProgramParticipantDeleteBy(entity.ID);

            for (int i = 0; i < entity.Experts.Deleted.Count; i++)
            {
              DBGuid ExpertRef = ((Expert) entity.Experts.Deleted.Items[i]).ID;
              m_DataContext.ndihdProgramParticipantInsert(ExpertRef, entity.ID);
            }
              }

              // Program partner - delete and insert
              if (entity.Organisations.AllCount > 0)
              {
            m_DataContext.ndihdPartnerProgramDeleteBy(entity.ID);

            for (int i = 0; i < entity.Organisations.Deleted.Count; i++)
            {
              DBGuid PartnerRef = ((Organisation) entity.Organisations.Deleted.Items[i]).ID;
              m_DataContext.ndihdProgramPartnerInsert(PartnerRef, entity.ID);
            }
              }

              #region Megyék

              // Program partner - delete and insert
              //if (entity.Regions.AllCount > 0)
              {
            //összeset letöröljük
            m_DataContext.ndihdRegionOfProgramDeleteBy(entity.ID);
            //egyesével felvesszük
            for (int i = 0; i < entity.Regions.All.Count; i++)
            {
              DBString regionRef = ((ProgramRegion) entity.Regions.All.Items[i]).RegionRef;
              m_DataContext.ndihdProgramRegionInsert(entity.ID, regionRef);
            }
              }

              #endregion

              // Program attachment
              if (entity.ProgramAttachments.AllCount > 0)
              {
            for (int i = 0; i < entity.ProgramAttachments.All.Count; i++)
            {
              // Get item from container
              ProgramAttachment attEntity = (ProgramAttachment) entity.ProgramAttachments.All.Items[i];

              // Check item existance
              ProgramAttachmentService srv = new ProgramAttachmentService();
              ProgramAttachment attSelected = srv.ProgramAttachmentSelect(attEntity.ID);
              if (attSelected == null)
              {
                // Insert a new
                attEntity.CreatedDate = DBDateTime.Now;

                if (attEntity.FileData != null && attEntity.FileData.Length > 0)
                {
                  if (attEntity.Path.Length == 0 || attEntity.Path == DBString.Null )
                    throw new ArgumentNullException("ProgramAttachment.Path", "A fájlnév nincs megadva.");

                  string fileName = attEntity.ID.Value.ToString() + Path.GetExtension(attEntity.Path);
                  FileDataContext fileDataContext = new FileDataContext();
                  fileDataContext.ProgramAttachmentInsert(attEntity.ProgramRef, fileName, attEntity.FileData);
                }

                m_DataContext.ndihdProgramAttachmentInsert(attEntity.ID,
                                                           attEntity.ProgramRef,
                                                           attEntity.Path,
                                                           attEntity.Name,
                                                           attEntity.Description,
                                                           attEntity.Author,
                                                           attEntity.Publisher,
                                                           attEntity.PublishedYear,
                                                           attEntity.Keywords,
                                                           attEntity.CreatedDate,
                                                           attEntity.FileSize,
                                                           attEntity.IsActive);
              }
              else
              {
                // Update existing
                if (attEntity.FileData != null && attEntity.FileData.Length > 0)
                {
                  if (attEntity.Path.Length == 0 || attEntity.Path == DBString.Null)
                    throw new ArgumentNullException("ProgramAttachment.Path", "A fájlnév nincs megadva.");

                  ProgramAttachment newAttachment = new ProgramAttachment(Guid.NewGuid(), attEntity);

                  string fileName = newAttachment.ID.Value.ToString() + Path.GetExtension(newAttachment.Path);
                  FileDataContext fileDataContext = new FileDataContext();
                  fileDataContext.ProgramAttachmentInsert(newAttachment.ProgramRef, fileName, newAttachment.FileData);

                  newAttachment.CreatedDate = DBDateTime.Now;
                  m_DataContext.ndihdProgramAttachmentInsert(newAttachment.ID,
                                                             newAttachment.ProgramRef,
                                                             newAttachment.Path,
                                                             newAttachment.Name,
                                                             newAttachment.Description,
                                                             newAttachment.Author,
                                                             newAttachment.Publisher,
                                                             newAttachment.PublishedYear,
                                                             newAttachment.Keywords,
                                                             newAttachment.CreatedDate,
                                                             newAttachment.FileSize,
                                                             newAttachment.IsActive);

                  attSelected.IsActive = false;
                  m_DataContext.ndihdProgramAttachmentUpdate(attSelected.ID,
                                                             attSelected.ProgramRef,
                                                             attSelected.Path,
                                                             attSelected.Name,
                                                             attSelected.Description,
                                                             attSelected.Author,
                                                             attSelected.Publisher,
                                                             attSelected.PublishedYear,
                                                             attSelected.Keywords,
                                                             attSelected.CreatedDate,
                                                             attSelected.FileSize,
                                                             attSelected.IsActive);
                }
                else
                {
                  m_DataContext.ndihdProgramAttachmentUpdate(attEntity.ID,
                                                             attEntity.ProgramRef,
                                                             attEntity.Path,
                                                             attEntity.Name,
                                                             attEntity.Description,
                                                             attEntity.Author,
                                                             attEntity.Publisher,
                                                             attEntity.PublishedYear,
                                                             attEntity.Keywords,
                                                             attEntity.CreatedDate,
                                                             attEntity.FileSize,
                                                             attEntity.IsActive);
                }
              }
            }
              }

              // Program keyword - delete and insert
              if (entity.Thesauruses.AllCount > 0)
              {
            base.DeleteChildrenByProgramOfKeyword(entity.ID);

            for (int i = 0; i < entity.Thesauruses.Deleted.Count; i++)
            {
              DBString KeywordRef = ((Thesaurus) entity.Thesauruses.Deleted.Items[i]).Keyword;
              ProgramKeyword entityPK = new ProgramKeyword(KeywordRef, entity.ID);

              ProgramKeywordService srv = new ProgramKeywordService(m_DataContext);
              srv.ProgramKeywordInsert(entityPK);
            }
              }

              // Program
              selected.LastModifiedDate = DateTime.Now;
              base.ProgramUpdate(selected);

              //feltöltjük a szabadszöveges kereséshez a GlobalSearch táblát
              GlobalSearchService srvGlobalSearch = new GlobalSearchService(m_DataContext);
              srvGlobalSearch.SaveProgram(selected);

              m_DataContext.CommitNested();
            }
            catch
            {
              m_DataContext.RollbackNested();
              throw;
            }

            BusinessAuditEvent.Success(
              new EventParameter("ProgramID", entity.ID.ToString()),
              new EventParameter("ProgramName", entity.Name)
              );
            TraceCallReturnEvent.Raise();
            return;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            BusinessAuditEvent.Fail(
              new EventParameter("Exception", ex.ToString()),
              new EventParameter("ProgramID", entity.ID.ToString()),
              new EventParameter("ProgramName", entity.Name)
              );
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }
Ejemplo n.º 3
0
        public new void ProgramInsert(Program entity)
        {
            // check permission: Writer or Admin
              string writerRole = entity.OrganisationRef.Value.ToString() + ".Writer";
              PrincipalPermission permWriter = new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, writerRole);
              PrincipalPermission permAdmin = new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, "Administrator");
              permWriter.Union(permAdmin).Demand();

              TraceCallEnterEvent.Raise();
              try
              {
            // check required fields:
            if (entity.ID.IsNull) throw new ArgumentNullException("Program.ID", "A program azonosítója nincs megadva.");
            if (entity.OrganisationRef.IsNull)
              throw new ArgumentNullException("Program.OrganisationRef", "A szervezet azonosítója nincs megadva.");
            if (entity.Name.Length == 0) throw new ArgumentNullException("Program.Name", "A program neve nincs megadva.");
            if (entity.Description.Length == 0)
              throw new ArgumentNullException("Program.Description", "A program leírása nincs megadva.");
            if (entity.ProgramStatus.Length == 0)
              throw new ArgumentNullException("Program.ProgramStatus", "A program státusza nincs megadva.");
            if (entity.ProgramCategoryRef.Length == 0)
              throw new ArgumentNullException("Program.ProgramCategoryRef", "A program típusa nincs megadva.");

            if (CheckProgramExistByName(entity.Name, entity.OrganisationRef, entity.ID))
            {
              throw new ApplicationException("Ezzel a névvel már létezik program!");
            }

            OrganisationService orgSrv = new OrganisationService(m_DataContext);
            Organisation orgSelected = orgSrv.OrganisationSelect(entity.OrganisationRef);
            if (orgSelected == null)
              throw new ApplicationException("Ezzel az azonosítóval nem létezik szervezet.");

            bool orgNeedToUpdate = false;

            switch (entity.ProgramCategoryRef)
            {
              case "PRE":
            if (!orgSelected.ActivityPrevention)
            {
              orgSelected.ActivityPrevention = true;
              orgNeedToUpdate = true;
            }
            break;
              case "TRE":
            if (!orgSelected.ActivityRehabilitation)
            {
              orgSelected.ActivityRehabilitation = true;
              orgNeedToUpdate = true;
            }
            break;
              case "RES":
            if (!orgSelected.ActivityResearch)
            {
              orgSelected.ActivityResearch = true;
              orgNeedToUpdate = true;
            }
            break;
              case "OTH":
            if (!orgSelected.ActivityOther)
            {
              orgSelected.ActivityOther = true;
              orgNeedToUpdate = true;
            }
            break;
            }

            // save data:
            entity.IsActive = true;

            m_DataContext.BeginNestedTran();
            try
            {
              entity.LastModifiedDate = DateTime.Now;
              base.ProgramInsert(entity);
              if (orgNeedToUpdate)
              {
            orgSrv.OrganisationUpdateBase(orgSelected);
              }

              #region Megyék

              // Program partner - delete and insert
              //if (entity.Regions.AllCount > 0)
              {
            //egyesével felvesszük
            for (int i = 0; i < entity.Regions.All.Count; i++)
            {
              DBString regionRef = ((ProgramRegion) entity.Regions.All.Items[i]).RegionRef;
              m_DataContext.ndihdProgramRegionInsert(entity.ID, regionRef);
            }
              }

              #endregion

              //feltöltjük a szabadszöveges kereséshez a GlobalSearch táblát
              GlobalSearchService srvGlobalSearch = new GlobalSearchService(m_DataContext);
              srvGlobalSearch.SaveProgram(entity);

              m_DataContext.CommitNested();
            }
            catch
            {
              m_DataContext.RollbackNested();
              throw;
            }

            BusinessAuditEvent.Success(
              new EventParameter("ProgramID", entity.ID.ToString()),
              new EventParameter("ProgramName", entity.Name)
              );
            TraceCallReturnEvent.Raise();
            return;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            BusinessAuditEvent.Fail(
              new EventParameter("Exception", ex.ToString()),
              new EventParameter("ProgramID", entity.ID.ToString()),
              new EventParameter("ProgramName", entity.Name)
              );
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }
Ejemplo n.º 4
0
        public new void ProgramUpdate(Program entity)
        {
            TraceCallEnterEvent.Raise();
              try
              {
            // logical checks:
            Program selected = base.ProgramSelect(entity.ID);
            if (selected == null)
              throw new ApplicationException("Ezzel az azonosítóval nem létezik program.");
            if (!selected.IsActive)
              throw new ApplicationException("A program nem aktív.");

            // check permission: Writer or Admin
            string writerRole = selected.OrganisationRef.Value.ToString() + ".Writer";
            PrincipalPermission permWriter = new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, writerRole);
            PrincipalPermission permAdmin = new PrincipalPermission(Thread.CurrentPrincipal.Identity.Name, "Administrator");
            permWriter.Union(permAdmin).Demand();

            // check required fields:
            if (entity.Name.Length == 0) throw new ArgumentNullException("Program.Name", "A program neve nincs megadva.");
            if (entity.Description.Length == 0)
              throw new ArgumentNullException("Program.Description", "A program leírása nincs megadva.");
            if (entity.ProgramStatus.Length == 0)
              throw new ArgumentNullException("Program.ProgramStatus", "A program státusza nincs megadva.");

            if (CheckProgramExistByName(entity.Name, selected.OrganisationRef, entity.ID))
            {
              throw new ApplicationException("Ezzel a névvel már létezik program!");
            }

            // save data:
            selected.Name = entity.Name;
            selected.Description = entity.Description;
            selected.ProgramStatus = entity.ProgramStatus;
            selected.StartDate = entity.StartDate;
            selected.FinishDate = entity.FinishDate;
            selected.NonregisteredPartners = entity.NonregisteredPartners;

            try
            {
              m_DataContext.BeginNestedTran();

              #region Megyék

              // Program partner - delete and insert
              if (entity.Regions.AllCount > 0)
              {
            //összeset letöröljük
            m_DataContext.ndihdRegionOfProgramDeleteBy(entity.ID);
            //egyesével felvesszük
            for (int i = 0; i < entity.Regions.All.Count; i++)
            {
              DBString regionRef = ((ProgramRegion) entity.Regions.All.Items[i]).RegionRef;
              m_DataContext.ndihdProgramRegionInsert(entity.ID, regionRef);
            }
              }

              #endregion
              selected.LastModifiedDate = DateTime.Now;
              base.ProgramUpdate(selected);

              //feltöltjük a szabadszöveges kereséshez a GlobalSearch táblát
              GlobalSearchService srvGlobalSearch = new GlobalSearchService(m_DataContext);
              srvGlobalSearch.SaveProgram(selected);
              m_DataContext.CommitNested();
            }
            catch
            {
              m_DataContext.RollbackNested();
              throw;
            }

            BusinessAuditEvent.Success(
              new EventParameter("ProgramID", entity.ID.ToString()),
              new EventParameter("ProgramName", entity.Name)
              );
            TraceCallReturnEvent.Raise();
            return;
              }
              catch (Exception ex)
              {
            ExceptionManager.Publish(ex);
            BusinessAuditEvent.Fail(
              new EventParameter("Exception", ex.ToString()),
              new EventParameter("ProgramID", entity.ID.ToString()),
              new EventParameter("ProgramName", entity.Name)
              );
            TraceCallReturnEvent.Raise(false);
            throw;
              }
        }