public JobViewModel Get(JobCriteria criteria, int?offset, int limit = 15)
        {
            var userId = User.FindFirst("UserId")?.Value;

            //var userId = FakeData.user.UserId;
            return(jobRepository.Get(criteria, userId, offset, limit));
        }
Exemplo n.º 2
0
        private List <Job> Search(JobCriteria criteria, string userId)
        {
            var listJob = jobs;

            listJob = listJob.Where(x => ((x.Id ?? "").Contains(criteria.SearchText ?? "") ||
                                          (x.CustomerName ?? "").Contains(criteria.SearchText ?? "") ||
                                          (x.PO_NO ?? "").Contains(criteria.SearchText ?? "") ||
                                          (x.MBL ?? "").Contains(criteria.SearchText ?? "")) &&
                                    (x.UserId == userId || string.IsNullOrEmpty(userId)) &&
                                    (x.AssignTime >= criteria.FromDate || criteria.FromDate == null) &&
                                    (x.AssignTime <= criteria.ToDate || criteria.ToDate == null)
                                    ).ToList();
            var results = listJob;

            switch (criteria.SearchStatus)
            {
            case StatusEnum.JobStatusSearch.Finish:
                results = results.Where(x => x.CurrentStageStatus == StatusEnum.JobStatus.Finish).OrderByDescending(x => x.ServiceDate).ToList();
                break;

            case StatusEnum.JobStatusSearch.InProgess:
                results = results.Where(x => x.CurrentStageStatus != StatusEnum.JobStatus.Finish).OrderBy(x => x.CurrentStageStatus).ToList();
                break;

            default:
                results = results.OrderByDescending(x => x.ServiceDate).ToList();
                break;
            }

            return(results);
        }
Exemplo n.º 3
0
        public JobViewModel Get(JobCriteria criteria, string userId, int?offset, int limit = 15)
        {
            var data             = Search(criteria, userId);
            var totalItems       = data.Count;
            var numberJobFinishs = data.Count(x => x.CurrentStageStatus == StatusEnum.JobStatus.Finish);

            if (offset != null)
            {
                int skip = (int)offset;
                int take = (int)limit;
                data = data.Skip(skip).Take(take).ToList();
            }
            data.ForEach(x =>
            {
                x.CurrentStageStatusName = GetStatusName(x.CurrentStageStatus);
                x.NumberStage            = stages.Count(y => y.JobId == x.Id);
                x.NumberStageFinish      = stages.Count(y => y.JobId == x.Id && y.Status == StatusEnum.StageStatus.Done);
                x.PercentFinish          = Math.Round(decimal.Divide(x.NumberStageFinish, x.NumberStage) * 100);
            });
            var result = new JobViewModel {
                Jobs = data, TotalItems = totalItems, NumberJobFinishs = numberJobFinishs, Offset = offset, Limit = limit
            };

            return(result);
        }
Exemplo n.º 4
0
 protected string SerializeJobCriteria(JobCriteria jobCriteria)
 {
     return(JsonConvert.SerializeObject(jobCriteria, new JsonSerializerSettings
     {
         NullValueHandling = NullValueHandling.Ignore
     }));
 }
Exemplo n.º 5
0
        public override LexResponse Process(LexEvent lexEvent, ILambdaContext context)
        {
            var slots             = lexEvent.CurrentIntent.Slots;
            var sessionAttributes = lexEvent.SessionAttributes ?? new Dictionary <string, string>();

            JobCriteria jobCriteria = new JobCriteria
            {
                LocationInput = slots.ContainsKey(LOCATION_SLOT) ? slots[LOCATION_SLOT] : null,
                Profession    = slots.ContainsKey(PROFESSION_SLOT) ? slots[PROFESSION_SLOT] : null,
                Skills        = slots.ContainsKey(SKILLS_SLOT) ? slots[SKILLS_SLOT].Split(',').ToList() : null,
                PerfectJob    = slots.ContainsKey(PERFECT_JOB_SLOT) ? slots[PERFECT_JOB_SLOT] : null,
                KeyPhrases    = slots.ContainsKey(PERFECT_JOB_SLOT) ? GetKeyPhrases(slots[PERFECT_JOB_SLOT]) : null
            };

            if (slots.ContainsKey(LOCATION_SLOT))
            {
                var geoLocation = FuzzyGeoCode(slots[LOCATION_SLOT]).Result;
                if (geoLocation != null && geoLocation.Longitude != 0 && geoLocation.Latitude != 0)
                {
                    jobCriteria.Longitude     = geoLocation.Longitude;
                    jobCriteria.Latituede     = geoLocation.Latitude;
                    jobCriteria.LocationInput = geoLocation.FormattedLocation;
                }
            }
            else
            {
                var geoLocation = FuzzyGeoCode("aurora, co").Result;
                if (geoLocation != null && geoLocation.Longitude != 0 && geoLocation.Latitude != 0)
                {
                    jobCriteria.Longitude     = geoLocation.Longitude;
                    jobCriteria.Latituede     = geoLocation.Latitude;
                    jobCriteria.LocationInput = geoLocation.FormattedLocation;
                }
            }

            sessionAttributes[CURRENT_JOB_CRITERIA_SESSION_ATTRIBUTE] = SerializeJobCriteria(jobCriteria);

            var jobs    = SearchJobs(jobCriteria);
            var content = "DERP! I didn't find any jobs that are a fit for you right now.";

            if (jobs.ResultItems.Any())
            {
                var job         = jobs.ResultItems.FirstOrDefault();
                var desciption  = job.description.Substring(0, 500);
                var cutOffIndex = desciption.LastIndexOf(' ');
                content = string.Format("I found your next job. {0} located in {1}. {2}... To apply visit {3}",
                                        job.jobTitle, job.locationText, desciption.Remove(cutOffIndex).Replace("&nbsp;", string.Empty), job.jobUrl);
            }

            return(Close(
                       sessionAttributes,
                       "Fulfilled",
                       new LexResponse.LexMessage
            {
                ContentType = MESSAGE_CONTENT_TYPE,
                Content = content
            }
                       ));
        }
Exemplo n.º 6
0
 public void SubmitSingleProcess(int processKey, JobCriteria criteria, bool isManual = true, string triggeredBy = "System")
 {
     SubmitProcess(new List <int>()
     {
         processKey
     }, new List <JobCriteria>()
     {
         criteria
     }, isManual, triggeredBy);
 }
Exemplo n.º 7
0
 public ProcessSubmittedContext(long id, int processKey, bool isResubmission, string submittedBy,
                                JobCriteria criteria, ILogger logger)
 {
     Criteria       = criteria;
     Id             = id;
     ProcessKey     = processKey;
     IsResubmission = isResubmission;
     SubmittedBy    = submittedBy;
     Logger         = logger;
 }
Exemplo n.º 8
0
 public HttpResponseMessage RunJobNow([FromBody] JobCriteria jobCriteria)
 {
     try
     {
         return(Request.CreateResponse(HttpStatusCode.OK, QuartzProgram <AdminController> .RunJobNow(jobCriteria.JobName, jobCriteria.JobGroup)));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, $"Failed to RunJobNow due to {ex.ToString()}"));
     }
 }
Exemplo n.º 9
0
            private new Job Single(Action <JobCriteria> with)
            {
                JobCriteria criteria = new JobCriteria();

                with(criteria);

                return(items
                       .Where(x => criteria.Identifier.Is(x.Key.Identifier))
                       .OrderByDescending(x => x.Key.Version)
                       .Select(x => new Job {
                    Header = x.Key, Extract = callback => callback(x.Value)
                })
                       .SingleOrDefault());
            }
Exemplo n.º 10
0
        private JobSearchResults SearchJobs(JobCriteria searchParms)
        {
            var credential = new SearchCredentials(AZURE_SEARCH_KEY);
            SearchServiceClient serviceClient = new SearchServiceClient(ACURE_SEARCH_SERVICE_NAME, credential);
            var indexClient = serviceClient.Indexes.GetClient("denvertechjobs");

            var sp = new SearchParameters
            {
                ScoringProfile          = (searchParms.Latituede != 0 && searchParms.Latituede != 0) ? "geo" : "newAndHighlyRated",
                IncludeTotalResultCount = true,
                SearchMode = SearchMode.All,
                //Filter = "trioType eq 'Food'"
            };

            if (searchParms.Latituede != 0 && searchParms.Latituede != 0)
            {
                var scoreParam = new ScoringParameter("currentLocation", Microsoft.Spatial.GeographyPoint.Create((double)searchParms.Latituede, (double)searchParms.Longitude));
                sp.ScoringParameters = new List <ScoringParameter> {
                    scoreParam
                };
            }

            var searchText = string.Join('|', searchParms.KeyPhrases) + "+" + string.Join('|', searchParms.Skills) + "+" + searchParms.Profession;

            DocumentSearchResult <JobDocument> response = indexClient.Documents.Search <JobDocument>(searchText, sp);

            var results = new JobSearchResults {
                TotalResults = response.Count
            };

            if (response.Results.Any())
            {
                var docs = (from d in response.Results select d.Document).ToList();
                results.ResultItems.AddRange(docs);
            }

            return(results);
        }
Exemplo n.º 11
0
        public void SubmitSingleProcess <T>(JobCriteria criteria, bool isManual = true, string triggeredBy = "System") where T : IBaseProcess
        {
            var processKey = Activator.CreateInstance <T>().ProcessKey;

            SubmitSingleProcess(processKey, criteria, isManual);
        }
Exemplo n.º 12
0
 public List <Job> GetBy(JobCriteria criteria)
 {
     return(Search(criteria, null));
 }