public async Task <IActionResult> Filter(ProviderSearchViewModel postedModel)
        {
            var idClaim     = HttpContext.User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier);
            var pagingState = await _sessionService.Get <PagingState>($"{idClaim.Value}_PagingState");

            if (null == pagingState)
            {
                pagingState = new PagingState();
            }
            pagingState.PageIndex              = PagingState.DefaultPageIndex; // applying filter resets the paging
            pagingState.SelectedProviderName   = postedModel.SelectedProviderName;
            pagingState.SelectedFeedbackStatus = postedModel.SelectedFeedbackStatus;
            await _sessionService.Set($"{idClaim.Value}_PagingState", pagingState);

            var model = await _trainingProviderService.GetTrainingProviderSearchViewModel(
                postedModel.EncodedAccountId,
                pagingState.SelectedProviderName,
                pagingState.SelectedFeedbackStatus,
                pagingState.PageSize,
                pagingState.PageIndex,
                pagingState.SortColumn,
                pagingState.SortDirection);

            ViewBag.EmployerAccountsHomeUrl = _urlBuilder.AccountsLink("AccountsHome", postedModel.EncodedAccountId);
            return(View("Index", model));
        }
        public ProviderSearchResultsViewModel SearchProviders(ProviderSearchViewModel searchViewModel)
        {
            var viewModel = new ProviderSearchResultsViewModel
            {
                SearchViewModel = searchViewModel
            };

            if (!searchViewModel.PerformSearch)
            {
                return(viewModel);
            }

            var searchParameters = new ProviderSearchParameters
            {
                Id    = searchViewModel.Id,
                Ukprn = searchViewModel.Ukprn,
                Name  = searchViewModel.Name
            };

            var providers = _providerService.SearchProviders(searchParameters);

            viewModel.Providers = providers.Select(p => p.Convert()).ToList();

            return(viewModel);
        }
        public MediatorResponse <ProviderSearchResultsViewModel> SearchProviders(ProviderSearchViewModel searchViewModel)
        {
            var validatonResult = _providerSearchViewModelServerValidator.Validate(searchViewModel);

            if (!validatonResult.IsValid)
            {
                return(GetMediatorResponse(AdminMediatorCodes.SearchProviders.FailedValidation, new ProviderSearchResultsViewModel {
                    SearchViewModel = searchViewModel
                }, validatonResult));
            }

            var viewModel = _providerProvider.SearchProviders(searchViewModel);

            return(GetMediatorResponse(AdminMediatorCodes.SearchProviders.Ok, viewModel));
        }
        public ActionResult Providers(ProviderSearchViewModel viewModel)
        {
            var response = _adminMediator.SearchProviders(viewModel);

            ModelState.Clear();

            switch (response.Code)
            {
            case AdminMediatorCodes.SearchProviders.FailedValidation:
                response.ValidationResult.AddToModelState(ModelState, "SearchViewModel");
                return(View(response.ViewModel));

            case AdminMediatorCodes.SearchProviders.Ok:
                return(View(response.ViewModel));

            default:
                throw new InvalidMediatorCodeException(response.Code);
            }
        }
Esempio n. 5
0
        public ActionResult Providers(ProviderSearchViewModel viewModel)
        {
            var response = _adminMediator.SearchProviders(viewModel);

            response.ViewModel.VacancyReferenceNumbers = viewModel.VacancyReferenceNumbers.Split(',').Select(int.Parse).ToList();
            ModelState.Clear();

            switch (response.Code)
            {
            case AdminMediatorCodes.SearchProviders.FailedValidation:
                response.ValidationResult.AddToModelState(ModelState, "SearchViewModel");
                return(View("ChooseProvider", response.ViewModel));

            case AdminMediatorCodes.SearchProviders.Ok:
                return(View("ChooseProvider", response.ViewModel));

            default:
                throw new InvalidMediatorCodeException(response.Code);
            }
        }
        private ProviderSearchViewModel GetProviderSearchUkRlpViewModel(ProviderSearchParametersViewModel searchParametersViewModel, ProviderSearchResultDto dto)
        {
            var viewModel = new ProviderSearchViewModel(searchParametersViewModel)
            {
                SearchResults =
                {
                    IsUkRlp = true
                },
                IsAuthorisedUser = HttpContext.User.IsAuthorisedAdminUser(_configuration.AuthorisedAdminUserEmail)
            };

            viewModel.SearchResults.Results.Add(new ProviderSearchResultItemViewModel
            {
                Id    = dto.Id,
                Name  = dto.Name,
                UkPrn = dto.UkPrn
            });

            return(viewModel);
        }
Esempio n. 7
0
        public string ReportGeneralCompare(string ReportGeneralCompare, string SearchParam, string SearchFilter)
        {
            if (ReportGeneralCompare == "true")
            {
                if (SessionModel.CurrentURL != null)
                {
                    SessionModel.CurrentURL = null;
                }

                ProviderSearchViewModel oModel = null;

                List <ProviderModel> oProviderResult;

                if (SessionModel.CurrentCompany != null &&
                    !string.IsNullOrEmpty(SessionModel.CurrentCompany.CompanyPublicId))
                {
                    //get basic search model
                    oModel = new ProviderSearchViewModel()
                    {
                        ProviderOptions      = ProveedoresOnLine.CompanyProvider.Controller.CompanyProvider.CatalogGetProviderOptions(),
                        SearchParam          = SearchParam,
                        SearchFilter         = SearchFilter == null ? null : (SearchFilter.Trim(new char[] { ',' }).Length > 0 ? SearchFilter.Trim(new char[] { ',' }) : null),
                        SearchOrderType      = MarketPlace.Models.General.enumSearchOrderType.Relevance,
                        OrderOrientation     = false,
                        PageNumber           = 0,
                        ProviderSearchResult = new List <ProviderLiteViewModel>(),
                    };

                    #region Providers

                    //search providers
                    int oTotalRowsAux;
                    oProviderResult =
                        ProveedoresOnLine.CompanyProvider.Controller.CompanyProvider.MPProviderSearchNew
                            (SessionModel.CurrentCompany.CompanyPublicId,
                            SessionModel.CurrentCompany.CompanyInfo.Where(x => x.ItemInfoType.ItemId == (int)enumCompanyInfoType.OtherProviders).Select(x => x.Value).FirstOrDefault() == "1" ? true : false,
                            oModel.SearchParam,
                            oModel.SearchFilter,
                            (int)oModel.SearchOrderType,
                            oModel.OrderOrientation,
                            oModel.PageNumber,
                            //oModel.RowCount,
                            65000,
                            out oTotalRowsAux);

                    oModel.TotalRows = oTotalRowsAux;

                    List <GenericFilterModel> oFilterModel = ProveedoresOnLine.CompanyProvider.Controller.CompanyProvider.MPProviderSearchFilterNew
                                                                 (SessionModel.CurrentCompany.CompanyPublicId,
                                                                 oModel.SearchParam,
                                                                 oModel.SearchFilter,
                                                                 SessionModel.CurrentCompany.CompanyInfo.Where(x => x.ItemInfoType.ItemId == (int)enumCompanyInfoType.OtherProviders).Select(x => x.Value).FirstOrDefault() == "1" ? true : false);

                    if (oFilterModel != null)
                    {
                        oModel.ProviderFilterResult = oFilterModel.Where(x => x.CustomerPublicId == SessionModel.CurrentCompany.CompanyPublicId).ToList();
                    }

                    //Branch Info


                    //parse view model
                    if (oProviderResult != null && oProviderResult.Count > 0)
                    {
                        oProviderResult.All(prv =>
                        {
                            ProviderModel response = ProveedoresOnLine.CompanyProvider.Controller.CompanyProvider.MPGetBasicInfo(prv.RelatedCompany.CompanyPublicId);
                            prv.RelatedFinantial   = response.RelatedFinantial;
                            prv.RelatedCommercial  = ProveedoresOnLine.CompanyProvider.Controller.CompanyProvider.MPContactGetBasicInfo(prv.RelatedCompany.CompanyPublicId, (int)enumContactType.Brach);
                            prv.RelatedLegal       = ProveedoresOnLine.CompanyProvider.Controller.CompanyProvider.MPLegalGetBasicInfo(prv.RelatedCompany.CompanyPublicId, (int)enumLegalType.RUT);

                            return(true);
                        });
                    }

                    #endregion Providers

                    #region Crete Excel

                    //Write the document
                    StringBuilder data             = new StringBuilder();
                    string        strSep           = ";";
                    string        strProvidersName = "\"" + "PROVEEDOR" + "\"";
                    string        Address          = string.Empty;
                    string        Telephone        = string.Empty;
                    string        Mail             = string.Empty;
                    string        Representative   = string.Empty;
                    string        Country          = string.Empty;
                    int           CityId           = 0;
                    string        City             = string.Empty;
                    string        State            = string.Empty;
                    string        AERut            = string.Empty;
                    string        Income           = string.Empty;
                    string        Utility          = string.Empty;
                    string        Etibda           = string.Empty;

                    oProviderResult.All(x =>
                    {
                        if (!string.IsNullOrEmpty(x.RelatedCompany.CompanyName))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + x.RelatedCompany.CompanyName + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "TIPO DE IDENTIFICACIÓN" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (!string.IsNullOrEmpty(x.RelatedCompany.IdentificationType.ItemName))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + x.RelatedCompany.IdentificationType.ItemName + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }
                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "NÚMERO DE IDENTIFICACIÓN" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (!string.IsNullOrEmpty(x.RelatedCompany.IdentificationNumber))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + x.RelatedCompany.IdentificationNumber + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }
                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "PAÍS" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    int oTotalRows = 0;
                                    CityId         = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_City).Select(z => Convert.ToInt32(z.Value)).DefaultIfEmpty(0).FirstOrDefault();
                                    List <ProveedoresOnLine.Company.Models.Util.GeographyModel> oGeographyModel = ProveedoresOnLine.Company.Controller.Company.CategorySearchByGeography(null, CityId, 0, 10000, out oTotalRows);

                                    Country = oGeographyModel.FirstOrDefault().Country.ItemName;
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(Country))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Country + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "CIUDAD" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    int oTotalRows = 0;
                                    CityId         = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_City).Select(z => Convert.ToInt32(z.Value)).DefaultIfEmpty(0).FirstOrDefault();
                                    List <ProveedoresOnLine.Company.Models.Util.GeographyModel> oGeographyModel = ProveedoresOnLine.Company.Controller.Company.CategorySearchByGeography(null, CityId, 0, 10000, out oTotalRows);

                                    City = oGeographyModel.FirstOrDefault().City.ItemName;
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(City))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + City + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "DEPARTAMENTO" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    int oTotalRows = 0;
                                    CityId         = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_City).Select(z => Convert.ToInt32(z.Value)).DefaultIfEmpty(0).FirstOrDefault();
                                    List <ProveedoresOnLine.Company.Models.Util.GeographyModel> oGeographyModel = ProveedoresOnLine.Company.Controller.Company.CategorySearchByGeography(null, CityId, 0, 10000, out oTotalRows);

                                    State = oGeographyModel.FirstOrDefault().State.ItemName;
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(State))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + State + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "REPRESENTANTE LEGAL" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    Representative = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_Representative).Select(z => z.Value).DefaultIfEmpty(string.Empty).FirstOrDefault();
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(Representative))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Representative + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "TELÉFONO" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    Telephone = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_Phone).Select(z => z.Value).DefaultIfEmpty(string.Empty).FirstOrDefault();
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(Telephone))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Telephone + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "CORREO" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    Mail = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_Email).Select(z => z.Value).DefaultIfEmpty(string.Empty).FirstOrDefault();
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(Mail))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Mail + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "DIRECCIÓN" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedCommercial != null)
                        {
                            x.RelatedCommercial.Where(y => y != null).All(y =>
                            {
                                bool isPrincipal = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.BR_IsPrincipal &&
                                                                    z.Value == "1").Select(z => z.Value).FirstOrDefault() == "1" ? true : false;

                                if (isPrincipal)
                                {
                                    Address = y.ItemInfo.Where(z => z.ItemInfoType.ItemId == (int)MarketPlace.Models.General.enumContactInfoType.B_Address).Select(z => z.Value).DefaultIfEmpty(string.Empty).FirstOrDefault();
                                }
                                return(true);
                            });
                        }
                        if (!string.IsNullOrEmpty(Address))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Address + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "ACTIVIDAD ECONOMICA" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedLegal != null)
                        {
                            List <ProviderLegalViewModel> RelatedLegalInfo = new List <ProviderLegalViewModel>();

                            x.RelatedLegal.All(z =>
                            {
                                RelatedLegalInfo.Add(new ProviderLegalViewModel(z));
                                return(true);
                            });
                            AERut = RelatedLegalInfo.Select(r => r.R_ICAName).DefaultIfEmpty(string.Empty).FirstOrDefault();
                        }
                        if (!string.IsNullOrEmpty(AERut))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + AERut + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);


                    strProvidersName = "\"" + "INGRESOS" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedFinantial != null)
                        {
                            List <ProviderFinancialBasicInfoViewModel> RelatedFinancialBasicInfo = new List <ProviderFinancialBasicInfoViewModel>();

                            decimal oExchange;
                            oExchange = ProveedoresOnLine.Company.Controller.Company.CurrencyExchangeGetRate(
                                Convert.ToInt32(x.RelatedFinantial.FirstOrDefault().ItemInfo.FirstOrDefault().ValueName),
                                Convert.ToInt32(Models.General.InternalSettings.Instance[Models.General.Constants.C_Settings_CurrencyExchange_COP].Value),
                                Convert.ToInt32(x.RelatedFinantial.FirstOrDefault().ItemName));

                            x.RelatedFinantial.All(z =>
                            {
                                RelatedFinancialBasicInfo.Add(new ProviderFinancialBasicInfoViewModel(z, oExchange));
                                return(true);
                            });
                            Income = RelatedFinancialBasicInfo.Select(r => r.BI_OperationIncome).DefaultIfEmpty(string.Empty).FirstOrDefault();
                        }
                        if (!string.IsNullOrEmpty(Income))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Income + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }

                        return(true);
                    });
                    data.AppendLine(strProvidersName);


                    strProvidersName = "\"" + "UTILIDAD NETA" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedFinantial != null)
                        {
                            List <ProviderFinancialBasicInfoViewModel> RelatedFinancialBasicInfo = new List <ProviderFinancialBasicInfoViewModel>();

                            decimal oExchange;
                            oExchange = ProveedoresOnLine.Company.Controller.Company.CurrencyExchangeGetRate(
                                Convert.ToInt32(x.RelatedFinantial.FirstOrDefault().ItemInfo.FirstOrDefault().ValueName),
                                Convert.ToInt32(Models.General.InternalSettings.Instance[Models.General.Constants.C_Settings_CurrencyExchange_COP].Value),
                                Convert.ToInt32(x.RelatedFinantial.FirstOrDefault().ItemName));

                            x.RelatedFinantial.All(z =>
                            {
                                RelatedFinancialBasicInfo.Add(new ProviderFinancialBasicInfoViewModel(z, oExchange));
                                return(true);
                            });
                            Utility = RelatedFinancialBasicInfo.Select(r => r.BI_IncomeBeforeTaxes).DefaultIfEmpty(string.Empty).FirstOrDefault();
                        }
                        if (!string.IsNullOrEmpty(Utility))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Utility + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }
                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    strProvidersName = "\"" + "EBITDA" + "\"";
                    oProviderResult.All(x =>
                    {
                        if (x.RelatedFinantial != null)
                        {
                            List <ProviderFinancialBasicInfoViewModel> RelatedFinancialBasicInfo = new List <ProviderFinancialBasicInfoViewModel>();

                            decimal oExchange;
                            oExchange = ProveedoresOnLine.Company.Controller.Company.CurrencyExchangeGetRate(
                                Convert.ToInt32(x.RelatedFinantial.FirstOrDefault().ItemInfo.FirstOrDefault().ValueName),
                                Convert.ToInt32(Models.General.InternalSettings.Instance[Models.General.Constants.C_Settings_CurrencyExchange_COP].Value),
                                Convert.ToInt32(x.RelatedFinantial.FirstOrDefault().ItemName));

                            x.RelatedFinantial.All(z =>
                            {
                                RelatedFinancialBasicInfo.Add(new ProviderFinancialBasicInfoViewModel(z, oExchange));
                                return(true);
                            });
                            Etibda = RelatedFinancialBasicInfo.Select(r => r.BI_EBITDA).DefaultIfEmpty(string.Empty).FirstOrDefault();
                        }
                        if (!string.IsNullOrEmpty(Etibda))
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + Etibda + "\"";
                        }
                        else
                        {
                            strProvidersName = strProvidersName + strSep + "\"" + "N/D" + "\"";
                        }
                        return(true);
                    });
                    data.AppendLine(strProvidersName);

                    byte[] buffer = Encoding.Default.GetBytes(data.ToString().ToCharArray());

                    #endregion Crete Excel
                    //Create
                    byte[] bytes = Encoding.Default.GetBytes(data.ToString().ToCharArray());

                    //get folder
                    string strFolder = System.Web.HttpContext.Current.Server.MapPath
                                           (Models.General.InternalSettings.Instance
                                           [Models.General.Constants.C_Settings_File_TempDirectory].Value);

                    if (!System.IO.Directory.Exists(strFolder))
                    {
                        System.IO.Directory.CreateDirectory(strFolder);
                    }

                    string oFileName = "GeneralReport_" + SessionModel.CurrentCompany.CompanyPublicId + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".";
                    oFileName = oFileName + ".csv";
                    string strFilePath = strFolder.TrimEnd('\\') + "\\" + oFileName;

                    File.WriteAllBytes(strFilePath, buffer);
                    string strRemoteFile = string.Empty;

                    strRemoteFile = ProveedoresOnLine.FileManager.FileController.LoadFile
                                        (strFilePath, Models.General.InternalSettings.Instance
                                        [Models.General.Constants.C_Settings_File_RemoteDirectory].Value.TrimEnd('\\') +
                                        "_" + DateTime.Now + "\\");

                    //remove temporal file
                    if (System.IO.File.Exists(strFilePath))
                    {
                        System.IO.File.Delete(strFilePath);
                    }
                    return(strRemoteFile);
                    //return File(buffer, "application/csv", "Proveedores_" + DateTime.Now.ToString("yyyyMMddHHmm") + ".csv");
                }
                return(null);
            }

            return(null);
        }
        public async Task <ProviderSearchViewModel> GetTrainingProviderSearchViewModel(
            string encodedAccountId,
            string selectedProviderName,
            string selectedFeedbackStatus,
            int pageSize,
            int pageIndex,
            string sortColumn,
            string sortDirection)
        {
            ProviderSearchViewModel model = new ProviderSearchViewModel();

            model.AccountId              = _encodingService.Decode(encodedAccountId, EncodingType.AccountId);
            model.EncodedAccountId       = encodedAccountId;
            model.SelectedProviderName   = selectedProviderName;
            model.SelectedFeedbackStatus = selectedFeedbackStatus;
            model.SortColumn             = sortColumn;
            model.SortDirection          = sortDirection;

            // Select all the providers for this employer.

            var providers = await SelectAllProvidersForAccount(model.AccountId);

            // Augment the provider records with feedback data. Urgh.
            // We need to do this so that the date filtering will work.

            await AugmentProviderRecordsWithFeedbackStatus(model.AccountId, providers);

            // Initialise the filter options.

            model.UnfilteredTotalRecordCount = providers.Count;
            model.ProviderNameFilter         = providers.Select(p => p.ProviderName).OrderBy(p => p).ToList();
            model.FeedbackStatusFilter       = new string[] { NOT_YET_SUBMITTED };

            // Apply filters.

            var filteredProviders = providers.AsQueryable();

            filteredProviders = ApplyProviderNameFilter(filteredProviders, selectedProviderName);
            filteredProviders = ApplyFeedbackStatusFilter(filteredProviders, selectedFeedbackStatus);

            // Sort

            if (PagingState.SortDescending == model.SortDirection)
            {
                if (!string.IsNullOrWhiteSpace(model.SortColumn) && model.SortColumn.Equals("FeedbackStatus", StringComparison.InvariantCultureIgnoreCase))
                {
                    filteredProviders = filteredProviders.OrderByDescending(p => p.FeedbackStatus);
                }
                else if (!string.IsNullOrWhiteSpace(model.SortColumn) && model.SortColumn.Equals("DateSubmitted", StringComparison.InvariantCultureIgnoreCase))
                {
                    filteredProviders = filteredProviders.OrderByDescending(p => p.DateSubmitted);
                }
                else
                {
                    filteredProviders = filteredProviders.OrderByDescending(p => p.ProviderName);
                }
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(model.SortColumn) && model.SortColumn.Equals("FeedbackStatus", StringComparison.InvariantCultureIgnoreCase))
                {
                    filteredProviders = filteredProviders.OrderBy(p => p.FeedbackStatus);
                }
                else if (!string.IsNullOrWhiteSpace(model.SortColumn) && model.SortColumn.Equals("DateSubmitted", StringComparison.InvariantCultureIgnoreCase))
                {
                    filteredProviders = filteredProviders.OrderBy(p => p.DateSubmitted);
                }
                else
                {
                    filteredProviders = filteredProviders.OrderBy(p => p.ProviderName);
                }
            }

            // Page

            var pagedFilteredProviders = filteredProviders.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

            model.TrainingProviders = new PaginatedList <ProviderSearchViewModel.EmployerTrainingProvider>(pagedFilteredProviders, filteredProviders.Count(), pageIndex, pageSize, 6);

            return(model);
        }