Beispiel #1
0
        /// <summary>
        /// Reads the jobs from pages of data provided by the <see cref="IJobsDataProvider"/>
        /// </summary>
        /// <returns></returns>
        public async Task <JobSearchResult> ReadJobs(JobSearchQuery query)
        {
            if (_jobResultsParser == null)
            {
                throw new InvalidOperationException("You must specify jobResultsParser when creating this instance to read jobs");
            }

            var jobs = new JobSearchResult()
            {
                Jobs = new List <Job>()
            };

            var currentPage = 1;

            while (true)
            {
                Stream stream = null;
                try
                {
                    stream = await ReadJobsFromTalentLink(currentPage, query).ConfigureAwait(false);

                    if (_saveHtml)
                    {
                        stream = SaveHtml(query, currentPage, stream);
                    }

                    var parseResult = await _jobResultsParser.Parse(stream).ConfigureAwait(false);

                    if (parseResult.Jobs.Count > 0)
                    {
                        jobs.Jobs.AddRange(parseResult.Jobs);
                    }

                    if (parseResult.IsLastPage)
                    {
                        break;
                    }
                    else
                    {
                        currentPage++;
                    }
                }
                finally
                {
                    stream?.Dispose();
                }
            }
            return(jobs);
        }
Beispiel #2
0
    protected void BtnSearch_Click(object sender, ImageClickEventArgs e)
    {
        ArrayList      arrTemp;
        JobSearchQuery m_SearchQueries = new JobSearchQuery();

        m_SearchQueries.Keyword = Util.ReplaceStrForDB(txtKeyword.Text);

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedPositions.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedPositions.UniqueID].Split(','));
        }
        m_SearchQueries.Positions = arrTemp;

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedSectors.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedSectors.UniqueID].Split(','));
        }
        m_SearchQueries.Sectors = arrTemp;

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedCities.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedCities.UniqueID].Split(','));
        }
        if (Request.Form[lbSelectedCountries.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedCountries.UniqueID].Split(','));
        }
        m_SearchQueries.Cities = arrTemp;

        arrTemp = new ArrayList();
        m_SearchQueries.Companies       = arrTemp;
        m_SearchQueries.EducationLevels = arrTemp;
        m_SearchQueries.AgeRange        = PIKCV.COM.EnumDB.AgeRange.age_All;
        m_SearchQueries.LabouringTypes  = arrTemp;
        m_SearchQueries.JobDate         = -1;
        m_SearchQueries.CustomJobs      = (rdCustomJobs.Checked);

        this.smJobSearchQueries = m_SearchQueries;

        this.smListFilterTypes = new ArrayList();
        this.Redirect("Employee-Jobs-Jobs");
    }
        /// <summary>
        /// Reads jobs matching the specified search query
        /// </summary>
        /// <param name="jobsSet">The jobs set.</param>
        /// <param name="query">The query.</param>
        /// <param name="baseUrl">The base URL.</param>
        /// <returns></returns>
        protected async Task <JobSearchResult> Jobs(JobsSet jobsSet, JobSearchQuery query, Uri baseUrl)
        {
            var jobsProvider = new JobsDataFromExamine(ExamineManager.Instance.SearchProviderCollection[jobsSet + "Searcher"],
                                                       new QueryBuilder(new LuceneTokenisedQueryBuilder(), new KeywordsTokeniser(), new LuceneStopWordsRemover(), new WildcardSuffixFilter()),
                                                       new SalaryRangeLuceneQueryBuilder(),
                                                       new RelativeJobUrlGenerator(baseUrl));

            var jobs = await jobsProvider.ReadJobs(query);

            foreach (var job in jobs.Jobs)
            {
                // Remove these unnecessary and large fields to significantly reduce the amount that's serialised and sent to the client
                job.AdvertHtml = null;
                job.AdditionalInformationHtml = null;
                job.EqualOpportunitiesHtml    = null;
            }
            return(jobs);
        }
Beispiel #4
0
        public void AllFiltersSingleValues()
        {
            // Format is [Work pattern] [type] jobs [in location] [paying salary range/pay grade] [advertised by organisation] [and matching keywords/reference]
            var query = new JobSearchQuery();

            query.WorkPatterns.Add("part time");
            query.ContractTypes.Add("Permanent");
            query.JobTypes.Add("Care and social work");
            query.Locations.Add("Eastbourne");
            query.SalaryRanges.Add("£20000 - £30000");
            query.PayGrades.Add("Pay grade");
            query.Departments.Add("Adult Social Care");
            query.Organisations.Add("East Sussex County Council");
            query.Keywords = "test query";

            var result = query.ToString();

            Assert.AreEqual("Part time permanent care and social work jobs in Eastbourne paying £20000 - £30000 or Pay grade working for Adult Social Care advertised by East Sussex County Council and matching 'test query'", result);
        }
        public async Task <ActionResult> ReplaceAlert(JobSearchQuery searchQuery)
        {
            if (ModelState.IsValid)
            {
                var converter = new JobSearchQueryConverter(ConfigurationManager.AppSettings["TranslateObsoleteJobTypes"]?.ToUpperInvariant() == "TRUE");
                var encoder   = new JobAlertIdEncoder(converter);
                var alertId   = encoder.ParseIdFromUrl(new Uri(Request.Url, Request.RawUrl));
                var repo      = new AzureTableStorageAlertsRepository(converter, ConfigurationManager.ConnectionStrings["Escc.EastSussexGovUK.Umbraco.AzureStorage"].ConnectionString);
                var oldAlert  = repo.GetAlertById(alertId);

                var newAlert = new JobAlert()
                {
                    Query     = searchQuery,
                    Email     = oldAlert.Email,
                    Frequency = searchQuery.Frequency,
                    JobsSet   = searchQuery.JobsSet
                };
                newAlert.AlertId = encoder.GenerateId(newAlert);

                if (oldAlert.AlertId == newAlert.AlertId)
                {
                    // The alert id didn't change but the frequency may have, so update the existing alert
                    await repo.SaveAlert(newAlert);
                }
                else
                {
                    // The alert id, and therefore the criteria, changed, so save the new alert and delete the old one
                    await repo.SaveAlert(newAlert);

                    await repo.CancelAlert(oldAlert.AlertId);
                }

                var urlWithoutQueryString = new Uri(Request.Url, new Uri(Request.Url, Request.RawUrl).AbsolutePath);
                var urlWithoutAlertId     = encoder.RemoveIdFromUrl(urlWithoutQueryString);
                var urlWithAlertId        = encoder.AddIdToUrl(urlWithoutAlertId, newAlert.AlertId);

                return(new RedirectResult(urlWithAlertId + "?updated=1"));
            }
            else
            {
                return(new RedirectResult(Request.RawUrl));
            }
        }
        /// <summary>
        /// Reads the jobs from pages of data provided by the <see cref="IJobsDataProvider"/>
        /// </summary>
        /// <returns></returns>
        public async Task <JobSearchResult> ReadJobs(JobSearchQuery query)
        {
            if (_jobResultsParser == null)
            {
                throw new InvalidOperationException("You must specify jobResultsParser when creating this instance to read jobs");
            }

            var jobs = new JobSearchResult()
            {
                Jobs = new List <Job>()
            };

            foreach (var resultsUrl in _resultsUrls)
            {
                var stream = await ReadXml(resultsUrl, _proxy).ConfigureAwait(false);

                jobs.Jobs.AddRange((await _jobResultsParser.Parse(stream)).Jobs);
            }
            return(jobs);
        }
Beispiel #7
0
        /// <summary>
        /// Saves the HTML to a folder under App_Data so that the success of the import can be monitored
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="currentPage">The current page.</param>
        /// <param name="stream">The stream.</param>
        /// <returns></returns>
        private Stream SaveHtml(JobSearchQuery query, int currentPage, Stream stream)
        {
            var folder = HostingEnvironment.MapPath("~/App_Data/TalentLinkHtml");

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            string html = null;

            using (var reader = new StreamReader(stream))
            {
                var queryString  = HttpUtility.ParseQueryString(_resultsUrl.Query);
                var htmlFilename = $"{folder}/{queryString["mask"]}-{DateTime.UtcNow.ToIso8601DateTime().Replace(":", "-")}-{query.ToHash()}-Page{currentPage}.html";
                html = reader.ReadToEnd();
                File.WriteAllText(htmlFilename, html);
            }
            stream = new MemoryStream(Encoding.UTF8.GetBytes(html));
            return(stream);
        }
        private static async Task <IEnumerable <SimpleDataSet> > CreateDataSetFromLookupValues(string indexType, string groupKey, int fakeNodeId, IList <JobsLookupValue> lookupValues, Action <JobsLookupValue, JobSearchQuery> addLookupToQuery, IJobsDataProvider jobsDataProvider)
        {
            var dataSets = new List <SimpleDataSet>();

            if (lookupValues != null)
            {
                foreach (var lookupValue in lookupValues)
                {
                    JobSearchQuery query = null;
                    if (addLookupToQuery != null)
                    {
                        query = new JobSearchQuery();
                        addLookupToQuery(lookupValue, query);
                        query.ClosingDateFrom = DateTime.Today;
                    }

                    var simpleDataSet = new SimpleDataSet {
                        NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>()
                    };

                    simpleDataSet.NodeDefinition.NodeId = fakeNodeId;
                    simpleDataSet.NodeDefinition.Type   = indexType;
                    simpleDataSet.RowData.Add("id", lookupValue.LookupValueId);
                    simpleDataSet.RowData.Add("group", groupKey);
                    simpleDataSet.RowData.Add("text", lookupValue.Text);

                    if (jobsDataProvider != null)
                    {
                        var jobs = await jobsDataProvider.ReadJobs(query).ConfigureAwait(false);

                        simpleDataSet.RowData.Add("count", jobs.TotalJobs.ToString(CultureInfo.CurrentCulture));
                    }

                    dataSets.Add(simpleDataSet);

                    fakeNodeId++;
                }
            }
            return(dataSets);
        }
Beispiel #9
0
        /// <summary>
        /// Initiates an HTTP request and returns the HTML.
        /// </summary>
        /// <returns></returns>
        private async Task <Stream> ReadJobsFromTalentLink(int currentPage, JobSearchQuery query)
        {
            var queryString = HttpUtility.ParseQueryString(_resultsUrl.Query);

            UpdateQueryString(queryString, "resultsperpage", "200");
            UpdateQueryString(queryString, "pagenum", currentPage.ToString(CultureInfo.InvariantCulture));

            if (query != null)
            {
                UpdateQueryString(queryString, "keywords", query.Keywords);
                UpdateQueryString(queryString, "jobnum", query.JobReference);
                UpdateQueryString(queryString, "LOV39", String.Join(",", query.Locations));
                UpdateQueryString(queryString, "LOV40", String.Join(",", query.JobTypes));
                UpdateQueryString(queryString, "LOV52", String.Join(",", query.Organisations));
                UpdateQueryString(queryString, "LOV46", String.Join(",", query.SalaryRanges));
                UpdateQueryString(queryString, "LOV50", String.Join(",", query.WorkPatterns));
                AddSortOrderToQueryString(queryString, query.SortBy);
            }

            var pagedSourceUrl = new StringBuilder(_resultsUrl.Scheme).Append("://").Append(_resultsUrl.Authority).Append(_resultsUrl.AbsolutePath).Append("?").Append(queryString);

            return(await ReadHtml(new Uri(pagedSourceUrl.ToString()), _proxy).ConfigureAwait(false));
        }
Beispiel #10
0
    protected void rptFilters_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        int FilterID = int.Parse(e.CommandArgument.ToString());

        //if (e.CommandName == "Remove") {
        //    PIKCV.BUS.Filters.RemoveFilter(FilterID);
        //    string FilterName = ((LinkButton)e.Item.FindControl("lnkFilterName")).Text;
        //    Response.Write("<script>alert('" + FilterName + " adýyla kayýtlý filtereniz silinmiþtir');</script>");
        //    FillData();
        //}
        //else
        if (e.CommandName == "Detail")
        {
            DataRow        drFilter      = PIKCV.BUS.Filters.GetFilter(FilterID);
            string         FilterValue   = drFilter["FilterValue"].ToString();
            Serialize      objSer        = new Serialize();
            JobSearchQuery SearchQueries = new JobSearchQuery();
            SearchQueries           = (JobSearchQuery)(objSer.DeserializeObject(FilterValue.Substring(1), typeof(JobSearchQuery)));
            this.smJobSearchQueries = SearchQueries;
            this.Redirect("Employee-Jobs-Jobs");
        }
        else if (e.CommandName == "Rename")
        {
            ((LinkButton)e.Item.FindControl("lnkFilterName")).Visible       = false;
            ((TextBox)e.Item.FindControl("txtFilterName")).Visible          = true;
            ((LinkButton)e.Item.FindControl("lnkFilterRenameSave")).Visible = true;
        }
        else if (e.CommandName == "RenameSave")
        {
            PIKCV.BUS.Filters.RenameFilter(FilterID, Request.Form[((TextBox)e.Item.FindControl("txtFilterName")).UniqueID].ToString());
            ((LinkButton)e.Item.FindControl("lnkFilterName")).Visible       = true;
            ((TextBox)e.Item.FindControl("txtFilterName")).Visible          = false;
            ((LinkButton)e.Item.FindControl("lnkFilterRenameSave")).Visible = false;
            FillData();
        }
    }
        /// <summary>
        /// Gets the jobs matching the supplied query
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public Task <JobSearchResult> ReadJobs(JobSearchQuery query)
        {
            var examineQuery = _searcher.CreateSearchCriteria(BooleanOperation.And);

            examineQuery.GroupedOr(new[] { "location" }, query.Locations.ToArray())
            .And().GroupedOr(new[] { "contractType" }, query.ContractTypes.ToArray())
            .And().GroupedOr(new[] { "salaryDisplay" }, query.PayGrades.ToArray())
            .And().GroupedOr(new[] { "workPattern" }, query.WorkPatterns.ToArray())
            .And().GroupedOr(new[] { "jobType" }, query.JobTypes.ToArray())
            .And().GroupedOr(new[] { "department" }, query.Departments.ToArray())
            .And().GroupedOr(new[] { "organisation" }, query.Organisations.ToArray());

            // If any of the GroupedOr values are empty, Examine generates a Lucene query that requires no field set to no value: +()
            // so we need to remove that and use the rest of the generated Lucene query
            var generatedQuery = examineQuery.ToString();

            generatedQuery = generatedQuery.Substring(34, generatedQuery.Length - 36);
            var modifiedQuery = generatedQuery.Replace("+()", String.Empty);

            if (_keywordsQueryBuilder != null)
            {
                // Search for title keywords by building up a clause that looks for any of the keywords to be present
                // in the job title
                modifiedQuery += _keywordsQueryBuilder.AnyOfTheseTermsInThisField(query.KeywordsInTitle ?? String.Empty, new SearchField()
                {
                    FieldName = "title"
                }, true);

                // Search for keywords by building up a clause that looks for all of the keywords to be present
                // in any one of the specified fields.
                modifiedQuery += _keywordsQueryBuilder.AllOfTheseTermsInAnyOfTheseFields(query.Keywords ?? String.Empty, new[]
                {
                    new SearchField()
                    {
                        FieldName = "reference"
                    },
                    new SearchField()
                    {
                        FieldName = "title", Boost = 2
                    },
                    new SearchField()
                    {
                        FieldName = "organisation"
                    },
                    new SearchField()
                    {
                        FieldName = "location"
                    },
                    new SearchField()
                    {
                        FieldName = "jobType"
                    },
                    new SearchField()
                    {
                        FieldName = "contractType"
                    },
                    new SearchField()
                    {
                        FieldName = "department"
                    },
                    new SearchField()
                    {
                        FieldName = "fullText", Boost = 0.5
                    }
                }, true);
            }

            // For the salary ranges we need a structure that Examine's fluent API can't build, so build the raw Lucene query instead
            if (_salaryQueryBuilder != null)
            {
                modifiedQuery += _salaryQueryBuilder.SalaryIsWithinAnyOfTheseRanges(query.SalaryRanges);
            }

            // Append a requirement that the job must not have closed
            if (query.ClosingDateFrom.HasValue)
            {
                modifiedQuery += " +closingDate:[" + query.ClosingDateFrom.Value.ToString("yyyyMMdd000000000") + " TO 30000000000000000]";
            }

            var luceneQuery = _searcher.CreateSearchCriteria(BooleanOperation.And);

            var sortField = String.Empty;

            switch (query.SortBy)
            {
            case JobSearchQuery.JobsSortOrder.JobTitleAscending:
            case JobSearchQuery.JobsSortOrder.JobTitleDescending:
                sortField = "titleDisplay";
                break;

            case JobSearchQuery.JobsSortOrder.LocationAscending:
            case JobSearchQuery.JobsSortOrder.LocationDescending:
                sortField = "locationDisplay";
                break;

            case JobSearchQuery.JobsSortOrder.SalaryRangeAscending:
            case JobSearchQuery.JobsSortOrder.SalaryRangeDescending:
                sortField = "salarySort";
                break;

            case JobSearchQuery.JobsSortOrder.WorkPatternAscending:
            case JobSearchQuery.JobsSortOrder.WorkPatternDescending:
                sortField = "workPattern";
                break;

            case JobSearchQuery.JobsSortOrder.ClosingDateAscending:
            case JobSearchQuery.JobsSortOrder.ClosingDateDescending:
                sortField = "closingDate";
                break;
            }

            if (String.IsNullOrWhiteSpace(modifiedQuery))
            {
                modifiedQuery = "__NodeId:[0 TO 999999]";
            }

            try
            {
                switch (query.SortBy)
                {
                case JobSearchQuery.JobsSortOrder.JobTitleAscending:
                case JobSearchQuery.JobsSortOrder.LocationAscending:
                case JobSearchQuery.JobsSortOrder.SalaryRangeAscending:
                case JobSearchQuery.JobsSortOrder.WorkPatternAscending:
                case JobSearchQuery.JobsSortOrder.ClosingDateAscending:
                    luceneQuery.RawQuery(modifiedQuery).OrderBy(sortField);
                    break;

                case JobSearchQuery.JobsSortOrder.JobTitleDescending:
                case JobSearchQuery.JobsSortOrder.LocationDescending:
                case JobSearchQuery.JobsSortOrder.SalaryRangeDescending:
                case JobSearchQuery.JobsSortOrder.WorkPatternDescending:
                case JobSearchQuery.JobsSortOrder.ClosingDateDescending:
                    luceneQuery.RawQuery(modifiedQuery).OrderByDescending(sortField);
                    break;

                default:
                    luceneQuery.RawQuery(modifiedQuery);
                    break;
                }

                var results = _searcher.Search(luceneQuery);

                var searchResult = new JobSearchResult()
                {
                    TotalJobs = results.Count()
                };

                IEnumerable <SearchResult> selectedResults;
                if (query.PageSize.HasValue)
                {
                    selectedResults = results.Skip((query.CurrentPage - 1) * query.PageSize.Value).Take(query.PageSize.Value);
                }
                else
                {
                    selectedResults = results;
                }

                searchResult.Jobs = BuildJobsFromExamineResults(selectedResults);
                return(Task.FromResult(searchResult));
            }
            catch (ParseException exception)
            {
                exception.Data.Add("Reference", query.JobReference);
                exception.Data.Add("Job types", String.Join(",", query.JobTypes.ToArray()));
                exception.Data.Add("Keywords in title", query.KeywordsInTitle);
                exception.Data.Add("Keywords", query.Keywords);
                exception.Data.Add("Locations", String.Join(",", query.Locations.ToArray()));
                exception.Data.Add("Organisations", String.Join(",", query.Organisations.ToArray()));
                exception.Data.Add("Salary ranges", String.Join(",", query.SalaryRanges.ToArray()));
                exception.Data.Add("Contract types", String.Join(",", query.ContractTypes.ToArray()));
                exception.Data.Add("Work patterns", String.Join(",", query.WorkPatterns.ToArray()));
                exception.Data.Add("Sort", query.SortBy);
                exception.Data.Add("Generated query", modifiedQuery);
                exception.ToExceptionless().Submit();

                var errorForLog = new StringBuilder($"Lucene.net could not parse {modifiedQuery} generated from parameters:").Append(Environment.NewLine)
                                  .Append("Reference:").Append(query.JobReference).Append(Environment.NewLine)
                                  .Append("Job types:").Append(String.Join(",", query.JobTypes.ToArray())).Append(Environment.NewLine)
                                  .Append("Keywords in title:").Append(query.KeywordsInTitle).Append(Environment.NewLine)
                                  .Append("Keywords:").Append(query.Keywords).Append(Environment.NewLine)
                                  .Append("Locations:").Append(String.Join(",", query.Locations.ToArray())).Append(Environment.NewLine)
                                  .Append("Organisations:").Append(String.Join(",", query.Organisations.ToArray())).Append(Environment.NewLine)
                                  .Append("Salary ranges:").Append(String.Join(",", query.SalaryRanges.ToArray())).Append(Environment.NewLine)
                                  .Append("Contract types:").Append(String.Join(",", query.ContractTypes.ToArray())).Append(Environment.NewLine)
                                  .Append("Work patterns:").Append(String.Join(",", query.WorkPatterns.ToArray())).Append(Environment.NewLine)
                                  .Append("Sort:").Append(query.SortBy).Append(Environment.NewLine);
                _log.Error(errorForLog.ToString());

                return(Task.FromResult(new JobSearchResult()));
            }
        }
        public IEnumerable <SimpleDataSet> GetAllData(string indexType)
        {
            //Ensure that an Umbraco context is available
            if (UmbracoContext.Current == null)
            {
                var dummyContext =
                    new HttpContextWrapper(
                        new HttpContext(new SimpleWorkerRequest("/", string.Empty, new StringWriter())));
                UmbracoContext.EnsureContext(
                    dummyContext,
                    ApplicationContext.Current,
                    new WebSecurity(dummyContext, ApplicationContext.Current),
                    false);
            }

            var dataSets = new List <SimpleDataSet>();

            try

            {
                var jobsDataProvider = GetJobsDataProvider();

                var i = 1;

                var locations = Task.Run(async() => await _lookupValuesProvider.ReadLocations()).Result;
                foreach (var lookupValue in locations)
                {
                    var query = new JobSearchQuery();
                    query.Locations.Add(lookupValue.Text);
                    query.ClosingDateFrom = DateTime.Today;
                    var simpleDataSet = Task.Run(async() => await CreateDataSetFromLookup(i, indexType, "Location", query, lookupValue, jobsDataProvider)).Result;
                    dataSets.Add(simpleDataSet);
                    i++;
                }

                var jobTypes = Task.Run(async() => await _lookupValuesProvider.ReadJobTypes()).Result;
                foreach (var lookupValue in jobTypes)
                {
                    var query = new JobSearchQuery();
                    query.JobTypes.Add(lookupValue.Text);
                    query.ClosingDateFrom = DateTime.Today;
                    var simpleDataSet = Task.Run(async() => await CreateDataSetFromLookup(i, indexType, "JobType", query, lookupValue, jobsDataProvider)).Result;
                    dataSets.Add(simpleDataSet);
                    i++;
                }

                var salaryRanges = Task.Run(async() => await _lookupValuesProvider.ReadSalaryRanges()).Result;
                foreach (var lookupValue in salaryRanges)
                {
                    var query = new JobSearchQuery();
                    query.SalaryRanges.Add(lookupValue.Text);
                    query.ClosingDateFrom = DateTime.Today;
                    var simpleDataSet = Task.Run(async() => await CreateDataSetFromLookup(i, indexType, "SalaryRange", query, lookupValue, jobsDataProvider)).Result;
                    dataSets.Add(simpleDataSet);
                    i++;
                }

                var organisations = Task.Run(async() => await _lookupValuesProvider.ReadOrganisations()).Result;
                foreach (var lookupValue in organisations)
                {
                    var query = new JobSearchQuery();
                    query.Organisations.Add(lookupValue.Text);
                    query.ClosingDateFrom = DateTime.Today;
                    var simpleDataSet = Task.Run(async() => await CreateDataSetFromLookup(i, indexType, "Organisation", query, lookupValue, jobsDataProvider)).Result;
                    dataSets.Add(simpleDataSet);
                    i++;
                }

                var workPatterns = Task.Run(async() => await _lookupValuesProvider.ReadWorkPatterns()).Result;
                foreach (var lookupValue in workPatterns)
                {
                    var query = new JobSearchQuery();
                    query.WorkPatterns.Add(lookupValue.Text);
                    query.ClosingDateFrom = DateTime.Today;
                    var simpleDataSet = Task.Run(async() => await CreateDataSetFromLookup(i, indexType, "WorkPattern", query, lookupValue, jobsDataProvider)).Result;
                    dataSets.Add(simpleDataSet);
                    i++;
                }
            }
            catch (Exception ex)
            {
                ex.ToExceptionless().Submit();
                LogHelper.Error <BaseJobsIndexer>("error indexing:", ex);
            }

            LogHelper.Info <BaseLookupValuesIndexer>($"{dataSets.Count} items built for indexing by {this.GetType().ToString()}");

            return(dataSets);
        }
        private static async Task <SimpleDataSet> CreateDataSetFromLookup(int fakeNodeId, string indexType, string group, JobSearchQuery query, JobsLookupValue lookupValue, IJobsDataProvider jobsDataProvider)
        {
            var simpleDataSet = new SimpleDataSet {
                NodeDefinition = new IndexedNode(), RowData = new Dictionary <string, string>()
            };

            simpleDataSet.NodeDefinition.NodeId = fakeNodeId;
            simpleDataSet.NodeDefinition.Type   = indexType;
            simpleDataSet.RowData.Add("id", lookupValue.Id);
            simpleDataSet.RowData.Add("group", group);
            simpleDataSet.RowData.Add("text", lookupValue.Text);

            if (jobsDataProvider != null)
            {
                var jobs = await jobsDataProvider.ReadJobs(query);

                simpleDataSet.RowData.Add("count", jobs.Count.ToString(CultureInfo.CurrentCulture));
            }
            return(simpleDataSet);
        }
Beispiel #14
0
    public void DataBind(PIKCV.COM.Enumerations.ListTypes ListType)
    {
        DataTable dt = new DataTable();
        DataTable dtInfo;

        switch (ListType)
        {
        case PIKCV.COM.Enumerations.ListTypes.Message:
            string JobID = "%";
            if (CARETTA.COM.Util.IsNumeric(Request.QueryString["JobID"]))
            {
                JobID = Request.QueryString["JobID"].ToString();
            }

            dtInfo = new DataTable();
            AddDataInfo(ref dtInfo, "", "ReadResult", false, -1);
            AddDataInfo(ref dtInfo, "Konu", "MessageTitle", false, -1, true, "Employee-Messages-MessageDetail", "MessageID");
            AddDataInfo(ref dtInfo, "Gönderen", "CompanyName", true, 0);
            AddDataInfo(ref dtInfo, "Tarih", "CreateDate", false, -1);
            AddDataInfo(ref dtInfo, "", "Delete", false, -1);


            InitializeHtQuery(dtInfo);
            dt = PIKCV.BUS.Messages.GetAllMessages(this.smUserID, false, PIKCV.COM.EnumDB.MemberTypes.Employee, this.HtQuery["CompanyName"].ToString(), JobID);


            dt.Columns.Add("ReadResult");
            dt.Columns.Add("Delete");

            foreach (DataRow dr in dt.Rows)
            {
                dr["Delete"] = "<a href=\"" + this.OpenConfirm(PIKCV.COM.EnumDB.ErrorTypes.cDeleteMessage, Convert.ToInt32(dr["MessageID"])) + "\">Sil<a>";
                if (Convert.ToBoolean(dr["IsRead"]))
                {
                    dr["ReadResult"] = "<img src='images/misc/read.jpg' />";
                }
                else
                {
                    dr["ReadResult"] = "<img src='images/misc/unread.jpg' />";
                }
            }

            FilterCount(dtInfo);

            AddListFilterTypes(dt, "CompanyID", "CompanyName");

            DataBind(dtInfo, dt, "Employee-Messages-Messages");

            lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoMessage);

            break;

        case PIKCV.COM.Enumerations.ListTypes.UserJobApplicants:
            dtInfo = new DataTable();
            AddDataInfo(ref dtInfo, "Baþvuru Tarihi", "ApplicationDate", false, -1);
            AddDataInfo(ref dtInfo, "Firma", "CompanyName", true, 0);
            AddDataInfo(ref dtInfo, "Pozisyon", "PositionName", true, 1, true, "Employee-Jobs-JobDetail", "JobID");
            AddDataInfo(ref dtInfo, "Durum", "JobApplicationStatusName", true, 2);
            AddDataInfo(ref dtInfo, "Mesaj", "MessageCount", false, -1, true, "Employee-Messages-Messages", "JobID");
            AddDataInfo(ref dtInfo, "Baþvuru Ýptal", "CancelApplicant", false, -1);

            InitializeHtQuery(dtInfo);
            dt = PIKCV.BUS.JobApplicants.GetUserJobApplicants(this.smUserID, this.smLanguageID, this.HtQuery["CompanyName"].ToString(), this.HtQuery["PositionName"].ToString(), this.HtQuery["JobApplicationStatusName"].ToString());

            dt.Columns.Add("CancelApplicant");

            foreach (DataRow dr in dt.Rows)
            {
                if ((PIKCV.COM.EnumDB.JobApplicationStates)dr["ApplicationStatusID"] == PIKCV.COM.EnumDB.JobApplicationStates.RecievedBack)
                {
                    dr["CancelApplicant"] = "";
                }
                else
                {
                    dr["CancelApplicant"] = "<a href=\"" + this.OpenConfirm(PIKCV.COM.EnumDB.ErrorTypes.cCancelApplicant, Convert.ToInt32(dr["JobApplicantID"]), "") + "\">Baþvuru Ýptal<a>";
                }
            }

            FilterCount(dtInfo);

            AddListFilterTypes(dt, "CompanyID", "CompanyName");
            AddListFilterTypes(dt, "PositionID", "PositionName");
            AddListFilterTypes(dt, "ApplicationStatusID", "JobApplicationStatusName");

            DataBind(dtInfo, dt, "Employee-JobApplicants-JobApplicants");

            lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoApplicant);

            break;

        case PIKCV.COM.Enumerations.ListTypes.CompanyMessages:

            dtInfo = new DataTable();
            AddDataInfo(ref dtInfo, "Konu", "MessageTitle", false, -1, true, "Company-Messages-MessageDetail", "MessageID");
            AddDataInfo(ref dtInfo, "Tarih", "CreateDate", false, -1);

            InitializeHtQuery(dtInfo);
            dt = PIKCV.BUS.Messages.GetCompanyMessages(this.smCompanyID, false, PIKCV.COM.EnumDB.MemberTypes.Company);

            FilterCount(dtInfo);

            DataBind(dtInfo, dt, "Company-Messages-Messages");

            lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoMessage);

            break;

        case PIKCV.COM.Enumerations.ListTypes.CompanySentMessages:

            dtInfo = new DataTable();
            AddDataInfo(ref dtInfo, "", "ReadResult", false, -1);
            AddDataInfo(ref dtInfo, "Konu", "MessageTitle", false, -1, true, "Company-Messages-SendMessageDetail", "MessageID");
            AddDataInfo(ref dtInfo, "Gönderilen", "FullName", true, 0, true, "Company-Messages-SentMessages", "UserID");
            AddDataInfo(ref dtInfo, "Tarih", "CreateDate", false, -1);

            InitializeHtQuery(dtInfo);
            dt = PIKCV.BUS.Messages.GetCompanySentMessages(this.smCompanyID, false, this.HtQuery["FullName"].ToString());

            dt.Columns.Add("ReadResult");

            foreach (DataRow dr in dt.Rows)
            {
                if (Convert.ToBoolean(dr["IsRead"]))
                {
                    dr["ReadResult"] = "";
                }
                else
                {
                    dr["ReadResult"] = "<img src='images/misc/unread.jpg' />";
                }
            }

            FilterCount(dtInfo);

            AddListFilterTypes(dt, "UserID", "FullName");

            DataBind(dtInfo, dt, "Company-Messages-SentMessages");

            lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoMessage);

            break;

        case PIKCV.COM.Enumerations.ListTypes.EnteredJobs:

            int m_Status = 1;
            PIKCV.COM.EnumDB.JobStatus JobStatus = PIKCV.COM.EnumDB.JobStatus.Active;
            if (CARETTA.COM.Util.IsNumeric(Request.QueryString["JobStatus"]))
            {
                m_Status  = Convert.ToInt32(Request.QueryString["JobStatus"]);
                JobStatus = (PIKCV.COM.EnumDB.JobStatus)m_Status;
            }

            dtInfo = new DataTable();
            AddDataInfo(ref dtInfo, "Referans Numarasý", "ReferenceNumber", false, -1);
            AddDataInfo(ref dtInfo, "Pozisyon", "PositionName", true, 0);
            AddDataInfo(ref dtInfo, "Baþvuru", "ApplicantCount", false, -1, true, "Company-Jobs-JobApplicants", "JobID");
            AddDataInfo(ref dtInfo, "Bitiþ Tarihi", "EndDate", false, -1);
            AddDataInfo(ref dtInfo, "Ýstatistik", "Statistics", false, -1);

            switch (JobStatus)
            {
            case PIKCV.COM.EnumDB.JobStatus.Active:
                AddDataInfo(ref dtInfo, "Durum", "Update", false, -1, true, "Company-Jobs-Jobs&JobFocus=2&JobSaveType=" + ((int)PIKCV.COM.Enumerations.JobSaveType.Update).ToString(), "JobID");
                AddDataInfo(ref dtInfo, "", "Archive", false, -1, true, "Company-Jobs-PublicJobs&JobStatus=4", "JobID");
                break;

            case PIKCV.COM.EnumDB.JobStatus.Draft:
                AddDataInfo(ref dtInfo, "Durum", "Update", false, -1, true, "Company-Jobs-Jobs&JobFocus=2&JobSaveType=" + ((int)PIKCV.COM.Enumerations.JobSaveType.ArchiveOrDraft).ToString(), "JobID");
                AddDataInfo(ref dtInfo, "", "Archive", false, -1, true, "Company-Jobs-PublicJobs&JobStatus=1", "JobID");
                break;

            case PIKCV.COM.EnumDB.JobStatus.Archive:
                AddDataInfo(ref dtInfo, "Durum", "Update", false, -1, true, "Company-Jobs-Jobs&JobFocus=2&JobSaveType=" + ((int)PIKCV.COM.Enumerations.JobSaveType.ArchiveOrDraft).ToString(), "JobID");
                AddDataInfo(ref dtInfo, "", "Archive", false, -1, true, "Company-Jobs-PublicJobs&JobStatus=1", "JobID");
                break;
            }

            AddDataInfo(ref dtInfo, "", "Delete", false, -1);


            //AddDataInfo(ref dtInfo, "", "Delete", false, -1, true, "Company-Jobs-PublicJobs&JobStatus=" + ((int)PIKCV.COM.EnumDB.JobStatus.Draft).ToString(), "JobID");

            InitializeHtQuery(dtInfo);
            dt = PIKCV.BUS.Job.GetCompanyJobsAll(this.smCompanyID, JobStatus, this.smLanguageID, this.HtQuery["PositionName"].ToString());

            dt.Columns.Add("Update");
            dt.Columns.Add("Archive");
            dt.Columns.Add("Delete");
            dt.Columns.Add("Statistics");

            foreach (DataRow dr in dt.Rows)
            {
                switch (JobStatus)
                {
                case PIKCV.COM.EnumDB.JobStatus.Active:
                    dr["Update"]  = "Güncelle";
                    dr["Archive"] = "Arþivle";
                    dr["Delete"]  = "";
                    break;

                case PIKCV.COM.EnumDB.JobStatus.Draft:
                    dr["Update"]  = "Güncelle";
                    dr["Archive"] = "Yayýnla";

                    //"<span onclick='DraftDeleteCtrl(3, 3)'>Delete</span>";


                    string Delete = "<u><b><span onclick='DraftDeleteCtrl(" +
                                    ((int)PIKCV.COM.EnumDB.JobStatus.Draft).ToString() +
                                    ", " + dr["JobID"].ToString() +
                                    ")'>Sil</span><b></u>";
                    dr["Delete"] = Delete;
                    break;

                case PIKCV.COM.EnumDB.JobStatus.Archive:
                    dr["Update"]  = "";
                    dr["Delete"]  = "";
                    dr["Archive"] = "Yayýnla";
                    break;
                }

                string StatisticImage = "<img onclick='OpenJobStatistics(";
                StatisticImage = StatisticImage + dr["JobID"].ToString() + ")'";
                StatisticImage = StatisticImage + "style='cursor: pointer;' src='images/misc/statistic.png' width='16' height='14' />";

                dr["Statistics"] = StatisticImage;

                string PositionName = "<strong><a href='javascript:;' onclick='OpenJobPreview(" + dr["JobID"].ToString() + ")'>" + dr["PositionName"].ToString() + "</a></strong>";
                dr["PositionName"] = PositionName;
            }

            FilterCount(dtInfo);

            AddListFilterTypes(dt, "PositionID", "PositionName");

            DataBind(dtInfo, dt, "Company-Jobs-PublicJobs");

            string NoRecordMsg = String.Empty;
            switch (JobStatus)
            {
            case PIKCV.COM.EnumDB.JobStatus.Active:
                lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoJob);
                break;

            case PIKCV.COM.EnumDB.JobStatus.Draft:
                lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoDraftJob);
                break;

            case PIKCV.COM.EnumDB.JobStatus.Archive:
                lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoArchiveJob);
                break;
            }

            break;

        case PIKCV.COM.Enumerations.ListTypes.JobSearchResults:
            JobSearchQuery JobSearchQueries = this.smJobSearchQueries;

            dtInfo = new DataTable();
            AddDataInfo(ref dtInfo, "Pozisyon", "PositionName_JobTitle", true, 0, true, "Employee-Jobs-JobDetail", "JobID");
            AddDataInfo(ref dtInfo, "Ref NO", "ReferenceNumber", false, -1);
            AddDataInfo(ref dtInfo, "Firma", "CompanyName", true, 1);
            AddDataInfo(ref dtInfo, "Son Baþvuru", "EndDate", false, -1);
            AddDataInfo(ref dtInfo, "Tarih", "ModifyDate", false, -1);
            AddDataInfo(ref dtInfo, "Baþvuru", "IsApply", true, 2);

            string Keyword                     = JobSearchQueries.Keyword;
            string Positions                   = XMLHelper.BuildXmlString("Positions", "PositionID", JobSearchQueries.Positions);
            string Sectors                     = (JobSearchQueries.Sectors.Count > 0) ? XMLHelper.BuildXmlString("Sectors", "SectorID", JobSearchQueries.Sectors) : String.Empty;
            string Cities                      = (JobSearchQueries.Cities.Count > 0) ? XMLHelper.BuildXmlString("Cities", "PlaceID", JobSearchQueries.Cities) : String.Empty;
            string Companies                   = (JobSearchQueries.Companies.Count > 0) ? XMLHelper.BuildXmlString("Copmanies", "CompanyID", JobSearchQueries.Companies) : String.Empty;
            string EducationLevels             = (JobSearchQueries.EducationLevels.Count > 0) ? XMLHelper.BuildXmlString("EducationLevels", "EducationLevelID", JobSearchQueries.EducationLevels) : String.Empty;
            PIKCV.COM.EnumDB.AgeRange AgeRange = JobSearchQueries.AgeRange;
            string   LabouringTypes            = (JobSearchQueries.LabouringTypes.Count > 0) ? XMLHelper.BuildXmlString("LabouringTypes", "LabouringTypeID", JobSearchQueries.LabouringTypes) : String.Empty;
            DateTime JobDate                   = (JobSearchQueries.JobDate != -1) ?  DateTime.Now.AddDays(JobSearchQueries.JobDate) : DateTime.MinValue;
            bool     CustomJobs                = JobSearchQueries.CustomJobs;

            InitializeHtQuery(dtInfo);

            int PositionID = (this.HtQuery["PositionName_JobTitle"].ToString() == "%") ? -1 : Convert.ToInt32(this.HtQuery["PositionName_JobTitle"]);
            int CompanyID  = (this.HtQuery["CompanyName"].ToString() == "%") ? -1 : Convert.ToInt32(this.HtQuery["CompanyName"]);
            int Status     = (this.HtQuery["IsApply"].ToString() == "%") ? -1 : Convert.ToInt32(this.HtQuery["IsApply"]);

            PIKCV.BUS.Job objJob = new PIKCV.BUS.Job();
            dt = objJob.GetJobs(this.smUserID, Keyword, Sectors, Cities, Positions, PIKCV.COM.EnumDB.JobStatus.Active, Companies, EducationLevels,
                                LabouringTypes, AgeRange, JobDate, CustomJobs, PositionID, CompanyID, Status);

            FilterCount(dtInfo);

            AddListFilterTypes(dt, "PositionID", "PositionName_JobTitle");
            AddListFilterTypes(dt, "CompanyID", "CompanyName");
            AddListFilterTypes(dt, "Status", "IsApply");

            DataBind(dtInfo, dt, "Employee-Jobs-Jobs");

            lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoJobSearch);

            break;

        case PIKCV.COM.Enumerations.ListTypes.CompanyJobApplicants:
            int ApplicantJobID = 0;
            if (CARETTA.COM.Util.IsNumeric(Request.QueryString["JobID"]))
            {
                ApplicantJobID = Convert.ToInt32(Request.QueryString["JobID"]);
            }

            dtInfo = new DataTable();
            //AddDataInfo(ref dtInfo, "Kiþi", "FullName", false, -1, true, "Company-Jobs-JobApplicants", "UserID");
            AddDataInfo(ref dtInfo, "Kiþi", "FullName", false, -1);
            AddDataInfo(ref dtInfo, "Baþvuru Tarihi", "ApplicationDate", false, -1);
            AddDataInfo(ref dtInfo, "Puan", "Rate", false, -1);
            AddDataInfo(ref dtInfo, "Durum", "JobApplicationStatusName", true, 0);
            AddDataInfo(ref dtInfo, "", "Unsuitability", false, -1);


            InitializeHtQuery(dtInfo);
            dt = PIKCV.BUS.JobApplicants.GetCompanyJobApplicants(ApplicantJobID, this.smLanguageID, this.HtQuery["JobApplicationStatusName"].ToString());
            dt.Columns.Add("Unsuitability");

            foreach (DataRow dr in dt.Rows)
            {
                dr["FullName"] = "<a href='Pikcv.aspx?Pik=Company-Jobs-JobApplicants&UserID=" + dr["UserID"].ToString() + "&JobApplicantID=" + dr["JobApplicantID"].ToString() + "'>" + dr["FullName"].ToString() + "</a>";
                if (!(Convert.ToInt32(dr["JobApplicationStatusID"]) == (int)PIKCV.COM.EnumDB.JobApplicationStates.Unsuitability))
                {
                    dr["Unsuitability"] = dr["Unsuitability"] = "<a href=\"" + this.OpenConfirm(PIKCV.COM.EnumDB.ErrorTypes.cJobApplicantUnsuitabilitySet, Convert.ToInt32(dr["JobApplicantID"])) + "\">Reddet<a>";
                }
            }

            FilterCount(dtInfo);

            AddListFilterTypes(dt, "JobApplicationStatusID", "JobApplicationStatusName");

            DataBind(dtInfo, dt, "Company-Jobs-JobApplicants");

            lblNoRecord.Text = PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.NoApplicant);

            break;
        }
    }
Beispiel #15
0
        public async Task Test_JobSearchQuery_PageForward_Should_ReturnNewPage()
        {
            // arrange
            var jobs = new JobFaker().Generate(100);

            await using var dbContext = GetDbContext();
            await dbContext.Setup(x => x.Jobs, jobs);

            var search = new JobSearchCriteria();

            // act
            var query = new JobSearchQuery(dbContext);
            var page1 = await query.Find(search, new PagingCriteria()
            {
                Page = 1, Size = 5
            });

            var page2 = await query.Find(search, new PagingCriteria()
            {
                Page = 2, Size = 5
            });

            var page3 = await query.Find(search, new PagingCriteria()
            {
                Page = 3, Size = 5
            });

            var page10 = await query.Find(search, new PagingCriteria()
            {
                Page = 10, Size = 5
            });

            // assert
            page1.Should().NotBeNull();
            page1.Page.Should().Be(1);
            page1.TotalItems.Should().Be(100);
            page1.TotalPages.Should().Be(20);
            page1.Data.Should()
            .NotContain(page2.Data)
            .And.NotContain(page3.Data)
            .And.NotContain(page10.Data);

            page2.Should().NotBeNull();
            page2.Page.Should().Be(2);
            page2.TotalItems.Should().Be(100);
            page2.TotalPages.Should().Be(20);
            page2.Data.Should()
            .NotContain(page1.Data)
            .And.NotContain(page3.Data)
            .And.NotContain(page10.Data);

            page3.Should().NotBeNull();
            page3.Page.Should().Be(3);
            page3.TotalItems.Should().Be(100);
            page3.TotalPages.Should().Be(20);
            page3.Data.Should()
            .NotContain(page1.Data)
            .And.NotContain(page2.Data)
            .And.NotContain(page10.Data);

            page10.Should().NotBeNull();
            page10.Page.Should().Be(10);
            page10.TotalItems.Should().Be(100);
            page10.TotalPages.Should().Be(20);
            page10.Data.Should()
            .NotContain(page1.Data)
            .And.NotContain(page2.Data)
            .And.NotContain(page3.Data);
        }
Beispiel #16
0
    protected void BtnSearch_Click(object sender, ImageClickEventArgs e)
    {
        ArrayList      arrTemp;
        JobSearchQuery m_SearchQueries = new JobSearchQuery();

        m_SearchQueries.Keyword = Util.ReplaceStrForDB(txtKeyword.Text);

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedPositions.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedPositions.UniqueID].Split(','));
        }
        m_SearchQueries.Positions = arrTemp;

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedSectors.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedSectors.UniqueID].Split(','));
        }
        m_SearchQueries.Sectors = arrTemp;

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedCities.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedCities.UniqueID].Split(','));
        }
        if (Request.Form[lbSelectedCountries.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedCountries.UniqueID].Split(','));
        }
        m_SearchQueries.Cities = arrTemp;

        arrTemp = new ArrayList();
        if (Request.Form[lbSelectedCompanies.UniqueID] != null)
        {
            arrTemp.AddRange(Request.Form[lbSelectedCompanies.UniqueID].Split(','));
        }
        m_SearchQueries.Companies = arrTemp;

        arrTemp = new ArrayList();
        foreach (ListItem li in chEducationLevels.Items)
        {
            if (li.Selected)
            {
                arrTemp.Add(li.Value);
            }
        }
        m_SearchQueries.EducationLevels = arrTemp;

        m_SearchQueries.AgeRange = (PIKCV.COM.EnumDB.AgeRange)(int.Parse(rdAgeRange.SelectedValue));

        arrTemp = new ArrayList();
        foreach (ListItem li in chListLabouringTypes.Items)
        {
            if (li.Selected)
            {
                arrTemp.Add(li.Value);
            }
        }
        m_SearchQueries.LabouringTypes = arrTemp;

        m_SearchQueries.JobDate = int.Parse(rdJobDate.SelectedValue);

        m_SearchQueries.CustomJobs = (rdCustomJobs.Checked);

        this.smJobSearchQueries = m_SearchQueries;



        if (chIsFilterSave.Checked)
        {
            Serialize objSerialize = new Serialize();
            string    FilterValue  = objSerialize.SerializeObject(this.smJobSearchQueries);
            if (PIKCV.BUS.Filters.CheckFilterExistance(this.smUserID, txtFilterName.Text, PIKCV.COM.EnumDB.MemberTypes.Employee, PIKCV.COM.EnumDB.FilterTypes.JobSearch) == 0)
            {
                PIKCV.BUS.Filters.SaveFilter(PIKCV.COM.EnumDB.FilterTypes.JobSearch, txtFilterName.Text, this.smUserID, PIKCV.COM.EnumDB.MemberTypes.Employee, FilterValue);
                this.smListFilterTypes = new ArrayList();
                //Response.Write("<script>alert('Filtreniz kaydedilmiþtir, filtre bilgilerinize kayýtlý filtreleriniz bölümünden ulaþabilirsiniz');window.location.href('pikcv.aspx?Pik=Employee-Jobs-Jobs');</script>");
                this.Redirect("Employee-Jobs-Jobs&PopupID=" + ((int)PIKCV.COM.EnumDB.ErrorTypes.FilterSaveSuccess).ToString());
            }
            else
            {
                //TODO: seçtiði herþey gidiyor
                ShowModal.Show(UserControls_Common_uModalPopup.Icons.alert, PIKCV.COM.Data.GetErrorMessageTitleCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.FilterAlreadyExist), PIKCV.COM.Data.GetErrorMessageCache(this.cmbErrors, PIKCV.COM.EnumDB.ErrorTypes.FilterAlreadyExist), false);
            }
        }
        else
        {
            this.smListFilterTypes = new ArrayList();
            this.Redirect("Employee-Jobs-Jobs");
        }
    }