private T PopulatePayload <T>(ChangeHistoryViewModel vm, T payload) where T : SearchChangeHistoryPayload { payload.EstablishmentFieldIds = vm.IsEstablishmentSearch && vm.SelectedEstablishmentFields.Any() ? vm.SelectedEstablishmentFields.ToArray() : null; payload.EstablishmentTypeIds = vm.IsEstablishmentSearch && vm.SelectedEstablishmentTypeIds.Any() ? vm.SelectedEstablishmentTypeIds.ToArray() : null; payload.GroupTypeIds = !vm.IsEstablishmentSearch && vm.SelectedGroupTypeIds.Any() ? vm.SelectedGroupTypeIds.ToArray() : null; payload.EntityName = vm.IsEstablishmentSearch ? "establishments" : "groups"; payload.ApproverUserGroupCode = vm.ApprovedBy.Clean(); payload.SuggesterUserGroupCode = vm.SuggestedBy.Clean(); payload.SortBy = vm.Sortby; if (vm.DateFilterMode == ChangeHistoryViewModel.DATE_FILTER_MODE_APPLIED) { payload.AppliedDateFrom = vm.DateFilterFrom?.ToDateTime(); payload.AppliedDateTo = vm.DateFilterTo?.ToDateTime(); } else if (vm.DateFilterMode == ChangeHistoryViewModel.DATE_FILTER_MODE_APPROVED) { payload.ApprovedDateFrom = vm.DateFilterFrom?.ToDateTime(); payload.ApprovedDateTo = vm.DateFilterTo?.ToDateTime(); } else if (vm.DateFilterMode == ChangeHistoryViewModel.DATE_FILTER_MODE_EFFECTIVE) { payload.EffectiveDateFrom = vm.DateFilterFrom?.ToDateTime(); payload.EffectiveDateTo = vm.DateFilterTo?.ToDateTime(); } return(payload); }
public async Task <ActionResult> SearchChangeHistory(ChangeHistoryViewModel viewModel) { if (!viewModel.NoResultsForName) { if (viewModel.SearchType.HasValue) { if (ModelState.IsValid) { if (viewModel.SearchType.OneOfThese(eSearchType.Text, eSearchType.EstablishmentAll)) { return(Redirect(Url.RouteUrl("ChangeHistoryEstablishments") + "?" + Request.QueryString)); } if (viewModel.SearchType.OneOfThese(eSearchType.Group, eSearchType.GroupAll)) { return(Redirect(Url.RouteUrl("ChangeHistoryGroups") + "?" + Request.QueryString)); } throw new NotSupportedException($"The search type '{viewModel.SearchType}' is not recognised."); } } } return(await Index(viewModel)); }
public async Task <PartialViewResult> GroupResultsPartial(ChangeHistoryViewModel viewModel) { viewModel = await ProcessGroupSearch(viewModel); HttpContext.Response.Headers.Add("x-count", viewModel.Count.ToString()); return(PartialView("Partials/_GroupResults", viewModel)); }
private async Task <ChangeHistoryViewModel> ProcessEstablishmentSearch(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == eSearchType.Text) { var result = await TryGetEstablishment(viewModel); if (result != null) { viewModel.EstablishmentName = result.Item2; var establishmentChanges = await _establishmentReadService.GetChangeHistoryAsync(result.Item1, viewModel.Skip, viewModel.Take, viewModel.Sortby, GetEstablishmentChangeHistoryFilters(viewModel), User); viewModel.Items = ConvertEstablishmentChanges(establishmentChanges, result.Item2); viewModel.Count = establishmentChanges.Count; viewModel.SingleEstablishment = true; } else { viewModel.NoResultsForName = true; } } else { var payload = PopulatePayload(viewModel, new SearchChangeHistoryBrowsePayload(viewModel.Skip, viewModel.Take)); var changes = await _svc.SearchAsync(payload, User); viewModel.Items = new List <ChangeHistorySearchItem>(changes.Items); viewModel.Count = changes.Count; } return(viewModel); }
public async Task <ActionResult> SearchChangeHistoryDownload(Guid id, ChangeHistoryViewModel vm) { var progress = await _svc.GetDownloadGenerationProgressAsync(id, User); return(progress.IsComplete ? View("ReadyToDownload", new Tuple <ProgressDto, ChangeHistoryViewModel>(progress, vm)) : View("PreparingPleaseWait", progress)); }
private async Task PopulateLists(ChangeHistoryViewModel model) { model.SuggesterGroups = (await _svc.GetSuggesterGroupsAsync(User)).OrderBy(s => s.Name).Select(s => new SelectListItem { Text = s.Name, Value = s.Code }); model.ApproverGroups = model.SuggesterGroups; model.EstablishmentTypes = (await _lookupService.EstablishmentTypesGetAllAsync()).OrderBy(e => e.Name).Select(e => new LookupItemViewModel(e)); model.GroupTypes = (await _lookupService.GroupTypesGetAllAsync()).OrderBy(g => g.Name).Select(g => new LookupItemViewModel(g)); model.EstablishmentFields = (await _svc.GetEstablishmentFieldsAsync(User)).OrderBy(e => e.Text).Select(s => new StringLookupItemViewModel(s.Key, s.Text)); }
public async Task <PartialViewResult> EstablishmentResultsPartial(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == null) { viewModel.SearchType = eSearchType.EstablishmentAll; } viewModel = await ProcessEstablishmentSearch(viewModel); HttpContext.Response.Headers.Add("x-count", viewModel.Count.ToString()); return(PartialView("Partials/_EstablishmentResults", viewModel)); }
public async Task <ActionResult> SearchChangeHistoryGroups(ChangeHistoryViewModel viewModel) { viewModel = await ProcessGroupSearch(viewModel); if (viewModel.GroupSearchError) { return(View("Index", viewModel)); } await PopulateLists(viewModel); return(View("Results", viewModel)); }
private async Task <Tuple <int, string> > TryGetGoupUid(ChangeHistoryViewModel model) { int?groupUid = null; var groupName = ""; if (model.GroupSearchModel.AutoSuggestValueAsInt.HasValue) { groupUid = model.GroupSearchModel.AutoSuggestValueAsInt.Value; var group = await _groupReadService.GetAsync(groupUid.Value, User); if (group.Success) { groupName = group.ReturnValue.Name; } } if (groupUid == null || string.IsNullOrWhiteSpace(groupName)) { ApiPagedResult <SearchGroupDocument> results = null; var searchText = model.GroupSearchModel.Text.Clean(); if (searchText != null) { results = await _groupReadService.SearchByIdsAsync(searchText, searchText.ToInteger(), searchText, searchText.ToInteger(), User); } if (results == null || results.Count == 0) { var payload = new GroupSearchPayload(model.Skip, model.Take) { Text = model.GroupSearchModel.Text.Clean() }; results = await _groupReadService.SearchAsync(payload, User); } if (results != null && results.Count > 0) { groupUid = results.Items.First().GroupUId; groupName = results.Items.First().Name; } else { return(null); } } return(new Tuple <int, string>(groupUid.Value, groupName)); }
public ActionResult Index(int id, string name) { int selectedReport = id; string selectedReportName = name; List <DB.ReportChangeLog> reportChange; reportChange = DB_MSBDW.ReportChangeLogs.Where(sp => sp.SSRSReportId == selectedReport).OrderByDescending(sp => sp.RowCreateDate).ToList(); ChangeHistoryViewModel changeHistoryViewModel = new ChangeHistoryViewModel(reportChange); ViewData["selectedReportId"] = selectedReport; ViewData["buttonName"] = "CH"; ViewData["selectedReportName"] = selectedReportName; return(View(changeHistoryViewModel.reportChangeLogs)); }
public async Task <ActionResult> SearchChangeHistoryEstab(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == null) { viewModel.SearchType = eSearchType.EstablishmentAll; } viewModel = await ProcessEstablishmentSearch(viewModel); if (viewModel.NoResultsForName) { return(View("Index", viewModel)); } await PopulateLists(viewModel); return(View("Results", viewModel)); }
public async Task <ActionResult> SearchChangeHistoryDownloadAjax(Guid id, ChangeHistoryViewModel vm) { var progress = await _svc.GetDownloadGenerationProgressAsync(id, User); if (vm.SingleEstablishment || vm.SingleGroup) { return(Json( JsonConvert.SerializeObject(new { status = progress.IsComplete, redirect = "/ChangeHistory/Search/Download/" }), JsonRequestBehavior.AllowGet)); } return(Json( JsonConvert.SerializeObject(new { status = progress.IsComplete, redirect = string.Concat("/ChangeHistory/Download/", id) }), JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> SearchChangeHistoryGroups(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == eSearchType.Group && viewModel.GroupSearchModel.Text.IsNullOrEmpty()) { ModelState.AddModelError("GroupSearchModel.Text", "We could not find any establishment groups matching your search criteria"); return(View("Index", viewModel)); } viewModel = await ProcessGroupSearch(viewModel); if (viewModel.GroupSearchError) { return(View("Index", viewModel)); } await PopulateLists(viewModel); return(View("Results", viewModel)); }
private async Task <ChangeHistoryViewModel> ProcessGroupSearch(ChangeHistoryViewModel viewModel) { switch (viewModel.SearchType) { case eSearchType.Group: var groupInfo = await TryGetGoupUid(viewModel); if (groupInfo != null) { var changes = await _groupReadService.GetChangeHistoryAsync(groupInfo.Item1, viewModel.Skip, viewModel.Take, viewModel.Sortby, viewModel.DateFilterFrom?.ToDateTime(), viewModel.DateFilterTo?.ToDateTime(), viewModel.SuggestedBy, User); viewModel.Items = ConvertGroupChanges(changes, groupInfo.Item2); viewModel.Count = changes.Count; viewModel.SingleGroup = true; viewModel.GroupName = groupInfo.Item2; } else { viewModel.GroupSearchError = true; ModelState.AddModelError("GroupSearchModel.Text", "We could not find any establishment groups matching your search criteria"); } break; case eSearchType.GroupAll: var payload = PopulatePayload(viewModel, new SearchChangeHistoryBrowsePayload(viewModel.Skip, viewModel.Take)); var allChanges = await _svc.SearchAsync(payload, User); viewModel.Items = new List <ChangeHistorySearchItem>(allChanges.Items); viewModel.Count = allChanges.Count; break; default: viewModel.GroupSearchError = true; break; } return(viewModel); }
private async Task <ChangeHistoryViewModel> ProcessEstablishmentSearch(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == eSearchType.Text) { var result = await TryGetEstablishment(viewModel); if (result != null) { viewModel.EstablishmentName = result.Item2; var establishmentChanges = await _establishmentReadService.GetChangeHistoryAsync(result.Item1, viewModel.Skip, viewModel.Take, viewModel.Sortby, GetEstablishmentChangeHistoryFilters(viewModel), User); viewModel.Items = ConvertEstablishmentChanges(establishmentChanges, result.Item2); viewModel.Count = establishmentChanges.Count; viewModel.SingleEstablishment = true; } else { viewModel.NoResultsForName = true; ModelState.AddModelError("TextSearchModel.Text", "We could not find any establishments matching your search criteria"); } } else { var payload = PopulatePayload(viewModel, new SearchChangeHistoryBrowsePayload(viewModel.Skip, viewModel.Take)); var changes = await _svc.SearchAsync(payload, User); viewModel.Items = new List <ChangeHistorySearchItem>(changes.Items); viewModel.Count = changes.Count; if (viewModel.Count == 0) { ModelState.AddModelError("searchby-all-ref", "We could not find any establishments matching your search criteria"); viewModel.NoResultsForName = true; } } return(viewModel); }
public async Task <ActionResult> SearchChangeHistoryEstab(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == null) { viewModel.SearchType = eSearchType.EstablishmentAll; } if (viewModel.IsEstablishmentSearch && viewModel.SearchType == eSearchType.Text && viewModel.TextSearchModel.Text.IsNullOrEmpty()) { ModelState.AddModelError("TextSearchModel.Text", "Please enter an establishment name, URN, LAESTAB or UKPRN to start a search"); return(View("Index", viewModel)); } viewModel = await ProcessEstablishmentSearch(viewModel); if (viewModel.NoResultsForName) { return(View("Index", viewModel)); } await PopulateLists(viewModel); return(View("Results", viewModel)); }
public async Task <ActionResult> SearchChangeHistory(ChangeHistoryViewModel viewModel) { if (viewModel.SearchType == eSearchType.Text && viewModel.NoResultsForName) { var errorMessage = "We could not find any establishments matching your search criteria"; if (viewModel.TextSearchModel.Text == string.Empty) { errorMessage = "Please enter an establishment name, URN, LAESTAB or UKPRN to start a search"; } ModelState.AddModelError("TextSearchModel.Text", errorMessage); } if (!viewModel.NoResultsForName) { if (viewModel.SearchType.HasValue) { if (ModelState.IsValid) { if (viewModel.SearchType.OneOfThese(eSearchType.Text, eSearchType.EstablishmentAll)) { return(Redirect(Url.RouteUrl("ChangeHistoryEstablishments") + "?" + Request.QueryString)); } if (viewModel.SearchType.OneOfThese(eSearchType.Group, eSearchType.GroupAll)) { return(Redirect(Url.RouteUrl("ChangeHistoryGroups") + "?" + Request.QueryString)); } throw new NotSupportedException($"The search type '{viewModel.SearchType}' is not recognised."); } } } return(await Index(viewModel)); }
public async Task <ChangeHistoryViewModel> GetHistoryRecord() { var entity = await _menuItemService.GetHistoryRecordAsync(); return(ChangeHistoryViewModel.Map(entity)); }
public ActionResult AddChangeHistoryResult() { int SSRSReportId = Convert.ToInt32(Request.Form["selectedReportId"]); string selectedSPName = Request.Form["IsRDLChange"] == "No" ? Request.Form["ReportSPNameValidated"]: Request.Form["ReportSPName"]; List <int> UnSelectedRepIds = new List <int>(); List <DB.Report_ReportSP> relatedRpts = new List <DB.Report_ReportSP>(); int selectedSPId = -1; if (selectedSPName != "" && selectedSPName != null) { selectedSPId = DB_MSBDW.ReportSPs.FirstOrDefault(s => s.SPName == selectedSPName).ID; relatedRpts = DB_MSBDW.Report_ReportSP.Where(sp => sp.ReportSPId == selectedSPId).Distinct().ToList(); string cbl1 = "checkboxlist[", cbl2 = "].id", cbl3 = "].isselected"; if (Request.Form[cbl1 + "0" + cbl3] != null) { for (int i = 0; i < relatedRpts.Count - 1; i++) { if (!Request.Form[cbl1 + i.ToString() + cbl3].Contains("true".ToLower())) { UnSelectedRepIds.Add(Convert.ToInt32(Request.Form[cbl1 + i.ToString() + cbl2])); } } } } string selectedEuName = Request.Form["CreatedEndUser"]; for (int i = 0; i < relatedRpts.Count || (Request.Form["IsRDLChange"] == "Yes" && relatedRpts.Count == 0); i++) // both with SP selected(at least one in relatedreports list, including "Yes" + SP and "No" + SP) and "Yes" + no SP can go through, and prevent "Yes" + SP index out of range exception { DB.ReportChangeLog temp = new DB.ReportChangeLog(); temp.ITComment = Request.Unvalidated.Form["ITComment"]; temp.PublicComment = Request.Form["PublicComment"]; temp.RowCreateDate = DateTime.Now; temp.ChangeEnduserId = DB_MSBDW.endusers.FirstOrDefault(eu => eu.full_name == selectedEuName).id; temp.ChangeReason = Request["ChangeReason"]; if (selectedSPId == -1 && Request.Form["IsRDLChange"] == "Yes") // For IsRdlChange is yes and no SP selected, break from the loop { temp.SSRSReportId = SSRSReportId; temp.IsRDLChange = true; DB_MSBDW.ReportChangeLogs.Add(temp); DB_MSBDW.SaveChanges(); break; } temp.ReportSPId = selectedSPId; temp.SSRSReportId = relatedRpts[i].SSRSReportId; if (Request.Form["IsRDLChange"] == "Yes" && !UnSelectedRepIds.Contains((int)relatedRpts[i].SSRSReportId)) // Only the selected reports(from checkboxlist) and current report will get flagged isrdgchange true when user selects IsRDlChange Yes { temp.IsRDLChange = true; } else { temp.IsRDLChange = false; } DB_MSBDW.ReportChangeLogs.Add(temp); DB_MSBDW.SaveChanges(); } List <DB.ReportChangeLog> reportChange = DB_MSBDW.ReportChangeLogs.Where(sp => sp.SSRSReportId == SSRSReportId).OrderByDescending(sp => sp.RowCreateDate).ToList(); ChangeHistoryViewModel changeHistoryViewModel = new ChangeHistoryViewModel(reportChange); ViewData["selectedReportId"] = SSRSReportId; ViewData["buttonName"] = "CH"; ViewData["selectedReportName"] = Request.Form["selectedReportName"]; return(RedirectToAction("Index", "ChangeHistory", new { id = SSRSReportId, name = Request.Form["selectedReportName"] })); }
private async Task <Tuple <int, string> > TryGetEstablishment(ChangeHistoryViewModel viewModel) { if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.URN) { var urn = Int32.Parse(viewModel.TextSearchModel.Text); var establishmentName = (await _establishmentReadService.GetEstablishmentNameAsync(urn, User)) ?? ""; return(new Tuple <int, string>(urn, establishmentName)); } else { int? urn = null; string name = null; if (viewModel.TextSearchModel.AutoSuggestValueAsInt.HasValue) { urn = viewModel.TextSearchModel.AutoSuggestValueAsInt; name = (await _establishmentReadService.GetEstablishmentNameAsync(urn.Value, User)) ?? ""; } else { var payload = new EstablishmentSearchPayload(viewModel.Skip, viewModel.Take); var filters = payload.Filters; if (viewModel.SearchType == eSearchType.Text || viewModel.SearchType == eSearchType.EstablishmentAll) { if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.UKPRN) { filters.UKPRN = viewModel.TextSearchModel.Text; } else if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.LAESTAB) { var laestab = LAESTAB.TryParse(viewModel.TextSearchModel.Text).Value; var localAuthorityId = (await _lookupService.LocalAuthorityGetAllAsync()).FirstOrDefault(x => x.Code == laestab.LocalAuthorityCode)?.Id; if (localAuthorityId.HasValue) { filters.LocalAuthorityIds = new int[] { localAuthorityId.Value } } ; filters.EstablishmentNumber = laestab.EstablishmentNumber; } else if (viewModel.TextSearchType == ChangeHistoryViewModel.eTextSearchType.EstablishmentName) { payload.Text = viewModel.TextSearchModel.Text; } else { return(null); } } var results = await _establishmentReadService.SearchAsync(payload, User); if (results != null && results.Items.Any()) { urn = results.Items.First().Urn; name = results.Items.First().Name; } } if (urn.HasValue) { return(new Tuple <int, string>(urn.Value, name)); } } return(null); }
public async Task <ActionResult> Index(ChangeHistoryViewModel viewModel) { return(View("Index", viewModel)); }
public async Task <ChangeHistoryViewModel> GetHistoryRecord() { var entity = await _contentGroupService.GetHistoryRecordAsync(TableName.Discount); return(ChangeHistoryViewModel.Map(entity)); }
public async Task <ActionResult> Download(ChangeHistoryViewModel viewModel) { if (!viewModel.DownloadFormat.HasValue) { if (viewModel.DisplayErrors) { ModelState.AddModelError(nameof(viewModel.DownloadFormat), "A file format must be selected"); } return(View("Download", viewModel)); } if (viewModel.IsEstablishmentSearch) { if (viewModel.SearchType == eSearchType.Text) { var result = await TryGetEstablishment(viewModel); var payload = new EstablishmentChangeHistoryDownloadFilters { ApprovedBy = viewModel.ApprovedBy, FieldsUpdated = viewModel.SelectedEstablishmentFields.Any() ? viewModel.SelectedEstablishmentFields.ToArray() : null, FileFormat = viewModel.DownloadFormat == eFileFormat.CSV ? DownloadType.csv : DownloadType.xlsx, SuggestedBy = viewModel.SuggestedBy }; if (viewModel.DateFilterMode == ChangeHistoryViewModel.DATE_FILTER_MODE_APPLIED) { payload.DateAppliedFrom = viewModel.DateFilterFrom?.ToDateTime(); payload.DateAppliedTo = viewModel.DateFilterTo?.ToDateTime(); } else if (viewModel.DateFilterMode == ChangeHistoryViewModel.DATE_FILTER_MODE_APPROVED) { payload.DateApprovedFrom = viewModel.DateFilterFrom?.ToDateTime(); payload.DateApprovedTo = viewModel.DateFilterTo?.ToDateTime(); } else if (viewModel.DateFilterMode == ChangeHistoryViewModel.DATE_FILTER_MODE_EFFECTIVE) { payload.DateEffectiveFrom = viewModel.DateFilterFrom?.ToDateTime(); payload.DateEffectiveTo = viewModel.DateFilterTo?.ToDateTime(); } var progress = await _establishmentReadService.GetChangeHistoryDownloadAsync(result.Item1, payload, User); return(View("ReadyToDownload", new Tuple <ProgressDto, ChangeHistoryViewModel>( new ProgressDto { FileLocationUri = progress.Url, FileSizeInBytes = progress.FileSizeInBytes }, viewModel))); } else { var payload = PopulatePayload(viewModel, new SearchChangeHistoryDownloadPayload(viewModel.DownloadFormat.Value)); var progress = await _svc.SearchWithDownloadGenerationAsync(payload, User); return(Redirect(string.Concat(Url.RouteUrl("ChangeHistoryDownload", new { id = progress.Id }), "?", Request.QueryString))); } } if (viewModel.SearchType == eSearchType.Group) { var groupInfo = await TryGetGoupUid(viewModel); var progress = await _groupDownloadService.DownloadGroupHistory(groupInfo.Item1, viewModel.DownloadFormat == eFileFormat.CSV?DownloadType.csv : DownloadType.xlsx, viewModel.DateFilterFrom?.ToDateTime(), viewModel.DateFilterTo?.ToDateTime(), viewModel.SuggestedBy, User); return(View("ReadyToDownload", new Tuple <ProgressDto, ChangeHistoryViewModel>( new ProgressDto { FileLocationUri = progress.Url, FileSizeInBytes = progress.FileSizeInBytes }, viewModel))); } var payloadAll = PopulatePayload(viewModel, new SearchChangeHistoryDownloadPayload(viewModel.DownloadFormat.Value)); var progressAll = await _svc.SearchWithDownloadGenerationAsync(payloadAll, User); return(Redirect(string.Concat(Url.RouteUrl("ChangeHistoryDownload", new { id = progressAll.Id }), "?", Request.QueryString))); }
private EstablishmentChangeHistoryFilters GetEstablishmentChangeHistoryFilters(ChangeHistoryViewModel viewModel) { var filters = new EstablishmentChangeHistoryFilters { ApprovedBy = viewModel.ApprovedBy, SuggestedBy = viewModel.SuggestedBy, FieldsUpdated = viewModel.SelectedEstablishmentFields.ToArray() }; switch (viewModel.DateFilterMode) { case ChangeHistoryViewModel.DATE_FILTER_MODE_EFFECTIVE: filters.DateEffectiveFrom = viewModel.DateFilterFrom?.ToDateTime(); filters.DateEffectiveTo = viewModel.DateFilterTo?.ToDateTime(); break; case ChangeHistoryViewModel.DATE_FILTER_MODE_APPLIED: filters.DateAppliedFrom = viewModel.DateFilterFrom?.ToDateTime(); filters.DateAppliedTo = viewModel.DateFilterTo?.ToDateTime(); break; case ChangeHistoryViewModel.DATE_FILTER_MODE_APPROVED: filters.DateApprovedFrom = viewModel.DateFilterFrom?.ToDateTime(); filters.DateApprovedTo = viewModel.DateFilterTo?.ToDateTime(); break; } return(filters); }