public override IList <SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
        {
            var searchDocs     = new List <SearchDocument> ();
            var settings       = new EduProgramSettingsRepository().GetSettings(moduleInfo);
            var portalSettings = HttpOffContextHelper.GetPortalSettings(moduleInfo.PortalID, moduleInfo.TabID, moduleInfo.CultureCode);

            var eduProgram = default(EduProgramInfo);

            if (settings.EduProgramId != null)
            {
                using (var modelContext = new UniversityModelContext()) {
                    eduProgram = new EduProgramQuery(modelContext).SingleOrDefault(settings.EduProgramId.Value);
                }
            }

            if (eduProgram != null && eduProgram.LastModifiedOnDate.ToUniversalTime() > beginDateUtc.ToUniversalTime())
            {
                var sd = new SearchDocument {
                    PortalId        = moduleInfo.PortalID,
                    AuthorUserId    = eduProgram.LastModifiedByUserId,
                    Title           = eduProgram.FormatTitle(),
                    Body            = eduProgram.SearchText(),
                    ModifiedTimeUtc = eduProgram.LastModifiedOnDate.ToUniversalTime(),
                    UniqueKey       = string.Format("University_EduProgram_{0}", eduProgram.EduProgramID),
                    Url             = eduProgram.GetSearchUrl(moduleInfo, portalSettings),
                    IsActive        = eduProgram.IsPublished(DateTime.Now)
                };

                searchDocs.Add(sd);
            }

            return(searchDocs);
        }
示例#2
0
        protected override void AddItem(EduProgramInfo item)
        {
            if (SecurityContext.CanAdd(typeof(EduProgramInfo)))
            {
                var now = DateTime.Now;
                new AddCommand <EduProgramInfo> (ModelContext, SecurityContext).Add(item, now);
                ModelContext.SaveChanges(false);

                if (checkAddDefaultProfile.Checked)
                {
                    var defaultProfile = new EduProgramProfileInfo {
                        ProfileCode  = string.Empty,
                        ProfileTitle = string.Empty,
                        EduProgramID = item.EduProgramID,
                        EduLevelId   = item.EduLevelID,
                        Languages    = UniversityConfig.Instance.EduProgramProfiles.DefaultLanguages,
                        // unpublish profile
                        EndDate = item.CreatedOnDate.Date
                    };

                    new AddCommand <EduProgramProfileInfo> (ModelContext, SecurityContext).Add(defaultProfile, now);
                    ModelContext.SaveChanges(false);
                }

                // update EduProgram module settings then adding new item
                if (ModuleConfiguration.ModuleDefinition.DefinitionName == "R7_University_EduProgram")
                {
                    var settingsRepository = new EduProgramSettingsRepository();
                    var settings           = settingsRepository.GetSettings(ModuleConfiguration);
                    settings.EduProgramId = item.EduProgramID;
                    settingsRepository.SaveSettings(ModuleConfiguration, settings);
                }

                new UpdateDocumentsCommand(ModelContext)
                .Update(formEditDocuments.GetModifiedData(), ModelType.EduProgram, item.EduProgramID, UserId);

                new UpdateEduProgramDivisionsCommand(ModelContext)
                .Update(formEditDivisions.GetModifiedData(), ModelType.EduProgram, item.EduProgramID);

                ModelContext.SaveChanges();
            }
        }
        /// <summary>
        /// Handles Click event for Update button
        /// </summary>
        /// <param name='sender'>
        /// Sender.
        /// </param>
        /// <param name='e'>
        /// Event args.
        /// </param>
        protected void buttonUpdate_Click (object sender, EventArgs e)
        {
            // HACK: Dispose current model context used in load to create new one for update
            if (modelContext != null) {
                modelContext.Dispose ();
                modelContext = null;
            }

            try {
                EduProgramInfo item;
                var isNew = false;

                // determine if we are adding or updating
                // ALT: if (Null.IsNull (itemId))
                if (!itemId.HasValue) {
                    // add new record
                    item = new EduProgramInfo ();
                    isNew = true;
                }
                else {
                    // update existing record
                    item = ModelContext.Get<EduProgramInfo> (itemId.Value);
                }

                // fill the object
                item.Code = textCode.Text.Trim ();
                item.Title = textTitle.Text.Trim ();
                item.Generation = textGeneration.Text.Trim ();
                item.StartDate = datetimeStartDate.SelectedDate;
                item.EndDate = datetimeEndDate.SelectedDate;
                item.HomePage = urlHomePage.Url;

                // update references
                item.EduLevelID = int.Parse (comboEduLevel.SelectedValue);
                item.EduLevel = ModelContext.Get<EduLevelInfo> (item.EduLevelID);
                item.DivisionId = divisionSelector.DivisionId;

                if (itemId == null) {
                    item.CreatedOnDate = DateTime.Now;
                    item.LastModifiedOnDate = item.CreatedOnDate;
                    item.CreatedByUserID = UserInfo.UserID;
                    item.LastModifiedByUserID = item.CreatedByUserID;

                    ModelContext.Add<EduProgramInfo> (item);
                    ModelContext.SaveChanges (false);

                    if (checkAddDefaultProfile.Checked) {
                        var defaultProfile = new EduProgramProfileInfo {
                            ProfileCode = string.Empty,
                            ProfileTitle = string.Empty,
                            EduProgramID = item.EduProgramID,
                            EduLevelId = item.EduLevelID,
                            CreatedOnDate = item.CreatedOnDate,
                            LastModifiedOnDate = item.LastModifiedOnDate,
                            CreatedByUserID = item.CreatedByUserID,
                            LastModifiedByUserID = item.LastModifiedByUserID,
                            // unpublish profile
                            EndDate = item.CreatedOnDate.Date
                        };

                        ModelContext.Add<EduProgramProfileInfo> (defaultProfile);
                        ModelContext.SaveChanges (false);
                    }
                }
                else {
                    item.LastModifiedOnDate = DateTime.Now;
                    item.LastModifiedByUserID = UserInfo.UserID;

                    // REVIEW: Solve on SqlDataProvider level on upgrage to 2.0.0?
                    if (item.CreatedOnDate == default (DateTime)) {
                        item.CreatedOnDate = item.LastModifiedOnDate;
                        item.CreatedByUserID = item.LastModifiedByUserID;
                    }

                    ModelContext.Update<EduProgramInfo> (item);
                }

                // update EduProgram module settings then adding new item
                if (isNew && ModuleConfiguration.ModuleDefinition.DefinitionName == "R7.University.EduProgram") {
                    var settingsRepository = new EduProgramSettingsRepository ();
                    var settings = settingsRepository.GetSettings (ModuleConfiguration);
                    settings.EduProgramId = item.EduProgramID;
                    settingsRepository.SaveSettings (ModuleConfiguration, settings);
                }

                // update related documents
                new UpdateDocumentsCommand (ModelContext)
                    .UpdateDocuments (formEditDocuments.GetData (), DocumentModel.EduProgram, item.EduProgramID);
                
                ModelContext.SaveChanges ();

                ModuleController.SynchronizeModule (ModuleId);

                Response.Redirect (Globals.NavigateURL (), true);
            }
            catch (Exception ex) {
                Exceptions.ProcessModuleLoadException (this, ex);
            }
        }