Beispiel #1
0
        public async Task <IActionResult> Approve(int id, [FromQuery] int approvalId)
        {
            var pageRouteVersion = _pageRouteVersionRepository.Get(id);

            if (pageRouteVersion.PageRouteId == null)
            {
                _toastNotification.AddErrorToastMessage("you must approve basic info first.");
                _eventLogger.LogInfoEvent(HttpContext.User.Identity.Name, Common.ActivityEnum.Warning, "Dynamic Page > " + ViewBag.DynamicPageName + " > Sections > Approve", "you must approve basic info first.");
            }
            else
            {
                UpdatePageRouteVersionStatus(pageRouteVersion, VersionStatusEnum.Approved);

                var user = await _userManager.GetUserAsync(HttpContext.User);

                var pageSections = _pageSectionVersionRepository.GetPageSections(pageRouteVersion.PageRouteId ?? 0);
                foreach (var section in pageSections)
                {
                    _pageSectionRepository.SoftDelete(section.Id);
                }
                var psvs = _pageSectionVersionRepository.GetPageSectionVersions(id);

                foreach (var record in psvs)
                {
                    record.ApprovalDate = DateTime.Now;
                    record.ApprovedById = user.Id;

                    PageSection pageSection = new PageSection()
                    {
                        ApprovalDate         = DateTime.Now,
                        ApprovedById         = user.Id,
                        ArDescription        = record.ArDescription,
                        ArImageAlt           = record.ArImageAlt,
                        ArTitle              = record.ArTitle,
                        CreatedById          = user.Id,
                        CreationDate         = record.CreationDate,
                        EnImageAlt           = record.EnImageAlt,
                        EnDescription        = record.EnDescription,
                        EnTitle              = record.EnTitle,
                        IsActive             = record.IsActive,
                        IsDeleted            = record.IsDeleted,
                        Url                  = record.Url,
                        PageSectionVersionId = record.Id,
                        PageSectionTypeId    = record.PageSectionTypeId,
                        ModificationDate     = DateTime.Now,
                        ModifiedById         = user.Id,
                        PageRouteId          = record.PageRouteVersion.PageRouteId ?? 0,
                        Order                = record.Order,
                    };

                    pageSection.PageSectionCards = new List <PageSectionCard>();
                    foreach (var card in record.PageSectionCardVersions)
                    {
                        pageSection.PageSectionCards.Add(new PageSectionCard
                        {
                            ApprovalDate  = DateTime.Now,
                            ApprovedById  = user.Id,
                            ArDescription = card.ArDescription,
                            ArImageAlt    = card.ArImageAlt,
                            ArTitle       = card.ArTitle,
                            CreatedById   = card.CreatedById,
                            CreationDate  = card.CreationDate,
                            EnDescription = card.EnDescription,
                            EnImageAlt    = card.EnImageAlt,
                            EnTitle       = card.EnTitle,
                            FileUrl       = card.FileUrl,
                            ImageUrl      = card.ImageUrl,
                            IsActive      = card.IsActive,
                            IsDeleted     = card.IsDeleted,
                            Order         = card.Order,
                            PageSectionId = pageSection.Id
                        });
                    }
                    _pageSectionRepository.Add(pageSection);
                    record.PageSectionId = pageSection.Id;
                    _pageSectionVersionRepository.NormalUpdate(record);
                }

                var prv = _pageRouteVersionRepository.Get(id);
                _pageRouteVersionRepository.ApprovePageRoute(prv, ChangeType.PageContent);

                var approvalItem = _approvalNotificationsRepository.GetById(approvalId);
                if (approvalItem == null)
                {
                    _toastNotification.AddWarningToastMessage("This Notification Has Been Deleted");
                    return(RedirectToAction("Index", "ApprovalNotifications"));
                }
                approvalItem.VersionStatusEnum = VersionStatusEnum.Approved;
                approvalItem.ChangesDateTime   = DateTime.Now;
                _approvalNotificationsRepository.Update(approvalItem);

                var pr = _pageRouteRepository.Get(prv.PageRouteId.Value);
                //generate html dynamic page
                _htmlHelper.ApplyPageChanges(prv.Id, pr);
                _toastNotification.AddSuccessToastMessage(ToasrMessages.ApprovalSuccess);
                _eventLogger.LogInfoEvent(HttpContext.User.Identity.Name, Common.ActivityEnum.Approve, "Dynamic Page > " + ViewBag.DynamicPageName + " > Sections > Approve", "Approved");

                try
                {
                    await _globalElasticSearchService.DeleteAsync(pr.Id);

                    await _globalElasticSearchService.AddAsync(_pageRouteRepository.GetPageData(pr.Id));
                }
                catch { }
            }

            return(RedirectToAction("Index", "ApprovalNotifications"));
        }