public async Task <IActionResult> OnGetAsync()
        {
            try
            {
                if (TempData.NotNullOrEmpty() && TempData.Peek(FindSubKey) != null)
                {
                    Input = TempData.Get <SubmissionSearchInputModel>(FindSubKey);
                    TempData.Keep(FindSubKey);
                }
                else
                {
                    Input = new SubmissionSearchInputModel();
                }
                await PopulateDropDowns();

                SuccessMessage       = TempData.Get <string>("EditSuccess") ?? TempData.Get <string>("DeleteSuccess") ?? string.Empty;
                Msd1SearchResultList = _msd1SubmissionSearch.GenerateMsd1ViewModelFilteredOnSearchCriteria(Input, false);
            }

            catch (Exception e)
            {
                ModelState.AddModelError("CustomError", "There has been an error connecting to the database");
                _logger.LogError(e.Message);
            }
            return(Page());
        }
        public async Task <IActionResult> OnPostSearch()
        {
            try
            {
                if (Input.DateEntered != null)
                {
                    if (!ValidateDate())
                    {
                        ModelState.AddModelError("CustomError", "Please check the format of your date");
                        Input = new SubmissionSearchInputModel();
                    }
                }

                Msd1SearchResultList = _msd1SubmissionSearch.GenerateMsd1ViewModelFilteredOnSearchCriteria(Input, false);
                await PopulateDropDowns();

                if (Msd1SearchResultList.Count == 0)
                {
                    ModelState.AddModelError("CustomError", "No records have been found matching the above criteria");
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError("CustomError", "There has been an error");
                _logger.LogError(e.Message);
            }

            TempData.Put(FindSubKey, Input);
            return(Page());
        }
        public IActionResult OnGetExport(SubmissionSearchInputModel searchInputs)
        {
            var msd1SummarySearchResultList = _msd1SubmissionSearch.GenerateMsd1ViewModelFilteredOnSearchCriteria(searchInputs, true);
            var byteArrayCsvData            = _csvExtractor.GenerateMsd1CsvExtract(msd1SummarySearchResultList);
            var csvDownloadFileName         = "MSD1SearchResults" + DateTime.Now.ToShortDateString() + ".csv";

            return(File(byteArrayCsvData, "text/csv", csvDownloadFileName));
        }
        public List <Msd1SummaryViewModel> GenerateMsd1ViewModelFilteredOnSearchCriteria(SubmissionSearchInputModel searchModel, bool resultToBeExported)
        {
            _searchFilterDictionary.Clear();
            CreateSearchDictionary(searchModel);
            if (_searchFilterDictionary.Count == 0)
            {
                return(new List <Msd1SummaryViewModel>());
            }

            CreateMsd1List(_searchFilterDictionary, MSDData.MSD1);
            if (_msd1Queryable == null)
            {
                return(new List <Msd1SummaryViewModel>());
            }

            AddToSummaryViewModel();
            PopulateShipAndSenderDetails();
            if (resultToBeExported)
            {
                PopulateAdditionalDetailsForCsvExport();
            }
            return(_msd1SummarySearchResultList);
        }
        private void CreateSearchDictionary(SubmissionSearchInputModel searchModel)
        {
            if (!string.IsNullOrWhiteSpace(searchModel.RecordRef))
            {
                _searchFilterDictionary.Add("RecordRef", searchModel.RecordRef);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.ShipName))
            {
                _searchFilterDictionary.Add("ShipName", searchModel.ShipName);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.SelectedCargoType))
            {
                _searchFilterDictionary.Add("CargoType", searchModel.SelectedCargoType);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.StatisticalPort))
            {
                _searchFilterDictionary.Add("StatisticalPort", searchModel.StatisticalPort);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.SenderId))
            {
                _searchFilterDictionary.Add("SenderID", searchModel.SenderId);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.SubmissionRef))
            {
                _searchFilterDictionary.Add("SubmissionRef", searchModel.SubmissionRef);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Agent))
            {
                _searchFilterDictionary.Add("Agent", searchModel.Agent);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Line))
            {
                _searchFilterDictionary.Add("Line", searchModel.Line);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.ReportingPort))
            {
                _searchFilterDictionary.Add("ReportingPort", searchModel.ReportingPort);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Port))
            {
                _searchFilterDictionary.Add("Port", searchModel.Port);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.IMO))
            {
                _searchFilterDictionary.Add("IMO", searchModel.IMO);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Year))
            {
                _searchFilterDictionary.Add("Year", searchModel.Year);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Quarter))
            {
                _searchFilterDictionary.Add("Quarter", searchModel.Quarter);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.DateEntered))
            {
                _searchFilterDictionary.Add("DateEntered", searchModel.DateEntered);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.Source))
            {
                _searchFilterDictionary.Add("Source", searchModel.Source);
            }
        }