public MediatorResponse <byte[]> GetSuccessfulCandidatesReportBytes(ReportSuccessfulCandidatesParameters parameters)
        {
            try
            {
                var reportResult = _reportingRepo.ReportSuccessfulCandidates(parameters.Type,
                                                                             parameters.FromDate.Date, parameters.ToDate.Date, parameters.AgeRange, parameters.ManagedBy, parameters.Region);

                var headerBuilder = new StringBuilder();
                headerBuilder.AppendLine("PROTECT,,,,,,,,,,,");
                headerBuilder.AppendLine(",,,,,,,,,,,");
                headerBuilder.AppendLine(",,,,,,,,,,,");

                var bytes = parameters.IncludeCandidateIds
                    ? GetCsvBytes <ReportSuccessfulCandidatesResultItem, ReportSuccessfulCandidatesWithIdsResultItemClassMap>(
                    reportResult, headerBuilder.ToString())
                    : GetCsvBytes <ReportSuccessfulCandidatesResultItem, ReportSuccessfulCandidatesResultItemClassMap>(
                    reportResult, headerBuilder.ToString());
                return(GetMediatorResponse(ReportingMediatorCodes.ReportCodes.Ok, bytes));
            }
            catch (Exception ex)
            {
                _logService.Warn(ex);
                return(GetMediatorResponse(ReportingMediatorCodes.ReportCodes.Error, new byte[0]));
            }
        }
        public MediatorResponse <ReportSuccessfulCandidatesParameters> GetSuccessfulCandidatesReportParams()
        {
            var result = new ReportSuccessfulCandidatesParameters();

            try
            {
                var localAuthorities = _reportingRepo.LocalAuthorityManagerGroups();
                result.ManagedByList = localAuthorities.ToListItemList();
                var regions = _reportingRepo.GeoRegionsIncludingAll();
                result.RegionList = regions.ToListItemList();
                return(GetMediatorResponse(ReportingMediatorCodes.ReportCodes.Ok, result));
            }
            catch (Exception ex)
            {
                _logService.Warn(ex);
                return(GetMediatorResponse(ReportingMediatorCodes.ReportCodes.Error, result));
            }
        }
        public ActionResult ValidateSuccessfulCandidatesCsv(ReportSuccessfulCandidatesParameters parameters)
        {
            var validationResponse = _reportingMediator.Validate(parameters);
            var newParameterSet    = _reportingMediator.GetUnsuccessfulCandidatesReportParams();

            validationResponse.ViewModel.ManagedByList = newParameterSet.ViewModel.ManagedByList;
            validationResponse.ViewModel.RegionList    = newParameterSet.ViewModel.RegionList;
            switch (validationResponse.Code)
            {
            case ReportingMediatorCodes.ReportCodes.Ok:
                return(View("SuccessfulCandidatesCsv", validationResponse.ViewModel));

            case ReportingMediatorCodes.ReportCodes.ValidationError:
            default:
                ModelState.Clear();
                validationResponse.ValidationResult.AddToModelStateWithSeverity(ModelState, string.Empty);
                return(View("SuccessfulCandidatesCsv", validationResponse.ViewModel));
            }
        }
        public ActionResult DownloadSuccessfulCandidatesCsv(ReportSuccessfulCandidatesParameters parameters)
        {
            var response = _reportingMediator.GetSuccessfulCandidatesReportBytes(parameters);

            return(File(response.ViewModel, "text/csv", "SuccessfulCandidatesCsv.csv"));
        }