Exemplo n.º 1
0
        //Single Get for getting all data with queries/pagination
        public PaginatedItemsResponse <Job> GetAllJobsWithFilter(PaginatedRequest model)
        {
            List <Job> JobList = null;
            PaginatedItemsResponse <Job> response = null;


            DataProvider.ExecuteCmd(GetConnection, "dbo.Jobs_SelectAll"
                                    , inputParamMapper : delegate(SqlParameterCollection paramCollection)
            {
                paramCollection.AddWithValue("@CurrentPage", model.CurrentPage);
                paramCollection.AddWithValue("@ItemsPerPage", model.ItemsPerPage);
                paramCollection.AddWithValue("@Query", model.Query);
                paramCollection.AddWithValue("@QueryWebsiteId", model.QueryWebsiteId);
                paramCollection.AddWithValue("@QueryStatus", model.QueryStatus);
                paramCollection.AddWithValue("@QueryJobType", model.QueryJobType);
                paramCollection.AddWithValue("@QueryStartDate", model.QueryStartDate);
                paramCollection.AddWithValue("@QueryEndDate", model.QueryEndDate);
            }, map : delegate(IDataReader reader, short set)

            {
                if (set == 0)
                {
                    Job SingleJob     = new Job();
                    int startingIndex = 0;   //startingOrdinal

                    SingleJob.Id                  = reader.GetSafeInt32(startingIndex++);
                    SingleJob.UserId              = reader.GetSafeString(startingIndex++);
                    SingleJob.JobStatus           = reader.GetSafeEnum <JobStatus>(startingIndex++);
                    SingleJob.JobType             = reader.GetSafeEnum <JobsType>(startingIndex++);
                    SingleJob.Price               = reader.GetSafeDecimal(startingIndex++);
                    SingleJob.Phone               = reader.GetSafeString(startingIndex++);
                    SingleJob.JobRequest          = reader.GetSafeInt32(startingIndex++);
                    SingleJob.SpecialInstructions = reader.GetSafeString(startingIndex++);
                    SingleJob.Created             = reader.GetSafeDateTime(startingIndex++);
                    SingleJob.Modified            = reader.GetSafeDateTime(startingIndex++);
                    SingleJob.WebsiteId           = reader.GetSafeInt32(startingIndex++);

                    if (JobList == null)
                    {
                        JobList = new List <Job>();
                    }
                    JobList.Add(SingleJob);
                }
                else if (set == 1)

                {
                    response            = new PaginatedItemsResponse <Job>();
                    response.TotalItems = reader.GetSafeInt32(0);
                }
            }

                                    );

            response.Items        = JobList;
            response.CurrentPage  = model.CurrentPage;
            response.ItemsPerPage = model.ItemsPerPage;

            return(response);
        }
Exemplo n.º 2
0
        public Job MakeJob()
        {
            var id = GetNewJobId();
            var j  = new Job(id);

            JobList.Add(j);
            return(j);
        }
        static void Main(string[] args)
        {
            JobList jobs = new JobList();

            List <Employee> employees = new List <Employee>();

            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                string[] inputArgs = input.Split();
                string   command   = inputArgs[0];
                inputArgs = inputArgs.Skip(1).ToArray();

                switch (command)
                {
                case "Job":
                    string   jobName      = inputArgs[0];
                    int      workingHours = int.Parse(inputArgs[1]);
                    string   employeeName = inputArgs[2];
                    Employee employee     = employees.FirstOrDefault(e => e.Name == employeeName);
                    Job      currentJob   = new Job(jobName, workingHours, employee);
                    jobs.Add(currentJob);
                    currentJob.JobDone += currentJob.OnJobDone;
                    break;

                case "StandardEmployee":
                    string standartEmployeeName = inputArgs[0];
                    employees.Add(new StandartEmployee(standartEmployeeName));
                    break;

                case "PartTimeEmployee":
                    string partTimeEmployeeName = inputArgs[0];
                    employees.Add(new PartTimeEmployee(partTimeEmployeeName));
                    break;

                case "Pass":
                    foreach (var job in jobs)
                    {
                        job.Update();
                        if (!jobs.Any())
                        {
                            break;
                        }
                    }
                    break;

                case "Status":
                    foreach (var job in jobs.Where(j => j.IsDone == false))
                    {
                        Console.WriteLine(job.ToString());
                    }
                    break;
                }
            }
        }
Exemplo n.º 4
0
 public JobInPeriodListVM()
 {
     JobList.Add(new JobInPeriodDTOWithActions()
     {
         Name = "شغل 1", JobId = 1
     });
     selectedJobInPeriod = new JobInPeriodDTOWithActions()
     {
         JobId = 1, Name = "شغل1", DictionaryName = "jobDic1"
     };
     init();
 }
        public IList <QueueWithTopEnqueuedJobsDto> Queues()
        {
            return(_dispatcher.QueryAndWait(state =>
            {
                // TODO: Move all allocations outside of dispatcher thread, just in case it helps
                var result = new List <QueueWithTopEnqueuedJobsDto>();

                foreach (var queueEntry in state.Queues)
                {
                    var queueResult = new JobList <EnqueuedJobDto>(Enumerable.Empty <KeyValuePair <string, EnqueuedJobDto> >());
                    var index = 0;
                    const int count = 5;

                    foreach (var message in queueEntry.Value.Queue)
                    {
                        if (index++ >= count)
                        {
                            break;
                        }

                        Job job = null;

                        if (state.Jobs.TryGetValue(message, out var jobEntry))
                        {
                            job = jobEntry.TryGetJob(out _);
                        }

                        var stateName = jobEntry?.State?.Name;
                        var inEnqueuedState = EnqueuedState.StateName.Equals(
                            stateName,
                            StringComparison.OrdinalIgnoreCase);

                        queueResult.Add(new KeyValuePair <string, EnqueuedJobDto>(message, new EnqueuedJobDto
                        {
                            Job = job,
                            State = stateName,
                            InEnqueuedState = inEnqueuedState,
                            EnqueuedAt = inEnqueuedState ? jobEntry?.State?.CreatedAt : null
                        }));
                    }

                    result.Add(new QueueWithTopEnqueuedJobsDto
                    {
                        Length = queueEntry.Value.Queue.Count,
                        Name = queueEntry.Key,
                        FirstJobs = queueResult
                    });
                }

                // TODO: Case sensitivity
                return result.OrderBy(x => x.Name).ToList();
            }));
        }
Exemplo n.º 6
0
    static void Main(string[] args)
    {
        JobList             jobs      = new JobList();
        List <BaseEmployee> employees = new List <BaseEmployee>();

        string[] input = Console.ReadLine().Split();

        while (input[0] != "End")
        {
            switch (input[0])
            {
            case "Job":
                Job realJob = new Job(input[1], int.Parse(input[2]), employees.FirstOrDefault(e => e.Name == input[3]));

                realJob.JobDone += realJob.OnJobDone;
                jobs.Add(realJob);
                break;

            case "StandartEmployee":
                BaseEmployee employee = new StandartEmployee(input[1]);
                employees.Add(employee);
                break;

            case "PartTimeEmployee":
                BaseEmployee pTemployee = new PartTimeEmployee(input[1]);
                employees.Add(pTemployee);
                break;

            case "Pass":
                foreach (var job in jobs)
                {
                    job.Update();
                }
                break;

            case "Status":
                foreach (var job in jobs)
                {
                    if (!job.IsDone)
                    {
                        Console.WriteLine(job.ToString());
                    }
                }
                break;
            }

            input = Console.ReadLine().Split();
        }
    }
Exemplo n.º 7
0
        public static JobList GetValidJobs(JobList jobList, string blockCompany = null)
        {
            // 去除該公司所提供的工作
            JobList validJobs = new JobList();

            foreach (Job job in jobList)
            {
                if (job.Company != blockCompany)
                {
                    validJobs.Add(job);
                }
            }

            return(validJobs);
        }
Exemplo n.º 8
0
        private static void Main(string[] args)
        {
            IList <IEmployee> employees = new List <IEmployee>();
            JobList           jobs      = new JobList();

            string command = string.Empty;

            while ((command = Console.ReadLine()) != "End")
            {
                string[]  tokens = command.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                IEmployee emp    = null;

                switch (tokens[0])
                {
                case "Job":
                    emp = employees.First(e => e.Name == tokens[3]);
                    Job job = new Job(tokens[1], int.Parse(tokens[2]), emp);
                    job.JobDone += jobs.HandleJobCompletion;
                    jobs.Add(job);
                    break;

                case "StandartEmployee":
                    emp = new StandartEmployee(tokens[1]);
                    employees.Add(emp);
                    break;

                case "PartTimeEmployee":
                    emp = new PartTimeEmployee(tokens[1]);
                    employees.Add(emp);
                    break;

                case "Pass":
                    List <Job> dummyJobs = new List <Job>(jobs);
                    foreach (var j in dummyJobs)
                    {
                        j.Update();
                    }
                    break;

                case "Status":
                    jobs.ForEach(j => Console.WriteLine(j));
                    break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Job RepeatManager > Adding Job
        /// <para>key = JobKeyName,
        /// todo = ExecuteFunctionPointer,
        /// delay = Update Sequence Delay(Seconds),
        /// repeatCount = Total Execute Count,
        /// parameter = params object[] : Your Parameter
        /// todoCondition = Execute Condition(true = Available Execute, false = Block Execute),
        /// autoDropCondition = Job Drop Condition(Flag : true = Drop, false = MoveNext)</para>
        /// </summary>
        public bool AddDelegateJob(string key, JobTodo toDo, float delay = 1.0f, int repeatCount = 0, object[] parameter = null,
                                   JobEndAction endActionWhenDrop        = null,
                                   JobToDoCondition toDoCondition        = null, JobAutoDropCondition autoDropCondition = null, bool isImmediately = true)
        {
            // Already Registered Job Check
            if (JobList.Find(job => job.key.Equals(key)) != null)
            {
                return(false);
            }

            GameObject JobObject = new GameObject(key);

            JobObject.transform.parent = this.transform;
            JobRepeatBase newJob = JobObject.AddComponent <JobRepeatBase>();

            newJob.key              = key;
            newJob.jobCoroutine     = null;
            newJob.jobTodo          = toDo;
            newJob.repeatDelay      = delay;
            newJob.repeatCount      = repeatCount;
            newJob.excuteCount      = 0;
            newJob.jobToDoCheck     = toDoCondition;
            newJob.jobAutoDropCheck = autoDropCondition;
            newJob.jobEndAction     = endActionWhenDrop;
            newJob.state            = JOB_STATE.JOB_STANDBY;
            newJob.worker           = CoJobHandle(key);
            newJob.parameter        = parameter;

            if (toDo == null)
            {
                Debug.LogWarningFormat("Are You Sure Adding Empty Job? Todo Parameter is null (key:{0})", key);
                newJob.state = JOB_STATE.JOB_EMPTY;
            }

            newJob.repeatDelay = newJob.repeatDelay < m_MinDelayTime ? m_MinDelayTime : newJob.repeatDelay;
            JobList.Add(newJob);

            if (isImmediately)
            {
                StartCoroutine(newJob.worker);
            }

            return(true);
        }
Exemplo n.º 10
0
 public JobListViewModel(string mainNodeName, ObservableCollection <VM> _ActiveVMList)
     : base()
 {
     //Scheduler scheduler = new Scheduler();
     MainNodeName           = mainNodeName;
     jobList                = new ObservableCollection <JobViewModel>();
     CancelJobListCommand   = new CompositeCommand();
     RequeueJobListCommand  = new CompositeCommand();
     SelectAllCommand       = new CompositeCommand();
     UnselectAllCommand     = new CompositeCommand();
     CancelTaskListCommand  = new CompositeCommand();
     RequeueTaskListCommand = new CompositeCommand();
     HpcScheduler           = new Scheduler();
     try
     {
         HpcScheduler.Connect(mainNodeName);
         ObservableCollection <VM> activeVMList = new ObservableCollection <VM>(_ActiveVMList);
         //IFilterCollection filters = scheduler.CreateFilterCollection();
         //filters.Add(Microsoft.Hpc.Scheduler.Properties.FilterOperator.In, PropId.
         //SchedulerNode node =
         var query = from ISchedulerJob job
                     in HpcScheduler.GetJobList(null, null)
                     where activeVMList.Any(j => job.AllocatedNodes.Contains(j.GetDomainName()))
                     select job;
         foreach (ISchedulerJob job in query)
         {
             JobList.Add(new JobViewModel(job, this));
         }
     }
     catch (Exception e)
     {
         MessageBox.Show(e.Message, "Getting Job list error", MessageBoxButton.OK, MessageBoxImage.Error);
     }
     //CancelJobListCommand = new DelegateCommand<ObservableCollection<JobViewModel>>(CancelJobList, CanCancelJobList);
     View = new JobListView();
     View.SetViewModel(this);
     ActionsView = new JobCommandsView(this);
 }
Exemplo n.º 11
0
        public static JobList GetValidJobs(FilterSetting filterSetting)
        {
            // 創建多個爬蟲(其數量不超過 NumberOfLogicalProcessors)
            string            TargetUrl      = filterSetting.CrawlUrl;
            char              ConnectionChar = TargetUrl.Last() == '/' ? '?' : '&';
            List <JobCrawler> JobCrawlers    = new List <JobCrawler>
            {
                new JobCrawler($"{TargetUrl}{ConnectionChar}page=1"),
                new JobCrawler($"{TargetUrl}{ConnectionChar}page=2"),
                new JobCrawler($"{TargetUrl}{ConnectionChar}page=3"),
                new JobCrawler($"{TargetUrl}{ConnectionChar}page=4"),
                new JobCrawler($"{TargetUrl}{ConnectionChar}page=5"),
                new JobCrawler($"{TargetUrl}{ConnectionChar}page=6"),
            };

            // 令爬蟲們抓取頁面 & 取得工作列表
            GetTargetPages(JobCrawlers);
            GetJobSections(JobCrawlers);

            // 根據設定檔來過濾每一隻爬蟲所擁有的工作列表
            JobList validJobs = new JobList();

            foreach (JobCrawler jobCrawler in JobCrawlers)
            {
                if (!jobCrawler.IsEncounterError())
                {
                    foreach (Job job in jobCrawler.GetJobs())
                    {
                        if (IsValidJob(filterSetting, job))
                        {
                            validJobs.Add(job);
                        }
                    }
                }
            }
            return(validJobs);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Add a job.
        /// </summary>
        public void add(CadKit.Threads.Jobs.Job job)
        {
            if (null == job)
            {
                return;
            }

            if (true == this.Contains(job))
            {
                return;
            }

            using (this.Lock.write())
            {
                _jobs.Add(job);
            }

            job.queue();

            if (null != this.JobAdded)
            {
                this.JobAdded(job);
            }
        }
Exemplo n.º 13
0
        public static JobList buildJobList( string strSuffixCode, string strCountry)
        {
            // build all jobs
            JobList jl = new JobList();
            JobItem ji;
            string aspecttblname = strCountry;

            DataTable dtAspects = CCLib.Cache.GetCachedDataTableWithNoExpire("MM_ALL_JOBS_" + strSuffixCode, "SELECT tblAspects" + aspecttblname + ".OccNumber, Central, Secondary, ID, Other, Education, EssentialSkills, DesirableSkills, OccName FROM Jobinfo" + strSuffixCode + " INNER JOIN tblAspects" + aspecttblname + " ON Jobinfo" + strSuffixCode + ".OccNumber = tblAspects" + aspecttblname + ".OccNumber order by OccName");
            foreach (DataRow rt in dtAspects.Rows)
            {
                    ji = new JobItem();
                    ji.JobRef = Convert.ToInt16(rt["OccNumber"].ToString());
                    ji.JobTitle = rt["OccName"].ToString();
                    jl.Add(ji);
            };
            //prepare rank
            int i = 1;
            foreach (JobItem ji1 in jl)
            {
                ji1.Rank = i;
                i++;
            };

            return (jl);
        }
        public IList <QueueWithTopEnqueuedJobsDto> Queues()
        {
            return(_dispatcher.QueryAndWait(state =>
            {
                var result = new List <QueueWithTopEnqueuedJobsDto>();

                foreach (var queueEntry in state.Queues)
                {
                    var queueResult = new JobList <EnqueuedJobDto>(Enumerable.Empty <KeyValuePair <string, EnqueuedJobDto> >());
                    var counter = 0;
                    var from = 0;
                    var perPage = 5;

                    foreach (var message in queueEntry.Value.Queue)
                    {
                        if (counter < from)
                        {
                            counter++; continue;
                        }
                        if (counter >= from + perPage)
                        {
                            break;
                        }

                        Job job = null;

                        if (state.Jobs.TryGetValue(message, out var jobEntry))
                        {
                            try
                            {
                                job = jobEntry.InvocationData.DeserializeJob();
                            }
                            catch (JobLoadException)
                            {
                            }
                        }

                        queueResult.Add(new KeyValuePair <string, EnqueuedJobDto>(message, new EnqueuedJobDto
                        {
                            Job = job,
                            State = jobEntry?.State?.Name,
                            InEnqueuedState = EnqueuedState.StateName.Equals(jobEntry?.State?.Name,
                                                                             StringComparison.OrdinalIgnoreCase),
                            EnqueuedAt = jobEntry?.State?.CreatedAt
                        }));

                        counter++;
                    }

                    result.Add(new QueueWithTopEnqueuedJobsDto
                    {
                        Fetched = 0,
                        Length = queueEntry.Value.Queue.Count,
                        Name = queueEntry.Key,
                        FirstJobs = queueResult
                    });
                }

                return result;
            }));
        }
Exemplo n.º 15
0
 public static JobList buildJobList(string strSuffixCode, string strCountry, AspectResultSet aspectResultSet, HealthResultSet healthResultSet, LevelResultSet levelResultSet)
 {
     //do a match
     JobList jl = new JobList();
     JobItem ji;
     string aspecttblname=strCountry;
     //mrm 15/8/2006 change SQL to exclude Talent jobs
     DataTable dtAspects = CCLib.Cache.GetCachedDataTableWithNoExpire("MM_ALL_JOBST_" + strSuffixCode, "SELECT tblAspects" + aspecttblname + ".OccNumber, Central, Secondary, ID, Other, Education, EssentialSkills, DesirableSkills, Talent, OccName FROM Jobinfo" + strSuffixCode + " INNER JOIN tblAspects" + aspecttblname + " ON Jobinfo" + strSuffixCode + ".OccNumber = tblAspects" + aspecttblname + ".OccNumber WHERE (Talent IS NULL) or (Talent=0) ORDER BY OccName");
     bool [] levelvals= new bool[MaxNoOfLevels+1];
     bool [] healthvals= new bool[MaxNoOfHealth+1];
     int [] aspectres= new int[MaxNoOfAspects+1] ;
     CreateFastClientArrays(aspectResultSet, levelResultSet, healthResultSet, healthvals, levelvals, aspectres);
     foreach (DataRow rt in dtAspects.Rows)
     {
         ji = new JobItem();
         ji.Score = ScoreArticle(rt,healthvals,levelvals,aspectres,ref ji.MatchCat,ref ji.MatchMore);
         ji.JobRef = Convert.ToInt16(rt["OccNumber"].ToString());
         ji.JobTitle = rt["OccName"].ToString();// +ji.MatchCat.ToString();
         //JM 20/04/2006 don't add jobs where they are a poor match
         if (((int)ji.MatchCat/100)<6)
         {
             jl.Add(ji);
         };
     };
     jl.Sort(delegate (JobItem x, JobItem y){return Comparer.Default.Compare(y.Score,x.Score);});
     // we only want the top 40
     if (jl.Count > 40)
     {
         jl.RemoveRange(40, jl.Count - 40);
     };
     //prepare rank
     int i = 1;
     foreach (JobItem ji1 in jl)
     {
         ji1.Rank = i;
         i++;
     };
     return (jl);
 }
Exemplo n.º 16
0
        public static JobList buildJobList(string strSuffixCode, string strCountry, AspectResultSet aspectResultSet, HealthResultSet healthResultSet, LevelResultSet levelResultSet, string strClusterCode, string strCluster)
        {
            //do a match, but only include those inside a cluster
            JobList jl = new JobList();
            JobItem ji;
            string aspecttblname = strCountry;

            //mrm 15/8/2006 change SQL to exclude Talent jobs
            DataTable dtAspects = CCLib.Cache.GetCachedDataTableWithNoExpire("MM_ALL_JOBST_" + strSuffixCode, "SELECT tblAspects" + aspecttblname + ".OccNumber, Central, Secondary, ID, Other, Education, EssentialSkills, DesirableSkills, Talent, OccName FROM Jobinfo" + strSuffixCode + " INNER JOIN tblAspects" + aspecttblname + " ON Jobinfo" + strSuffixCode + ".OccNumber = tblAspects" + aspecttblname + ".OccNumber WHERE (Talent IS NULL) or (Talent=0) ORDER BY OccName");
            bool[] levelvals = new bool[MaxNoOfLevels + 1];
            bool[] healthvals = new bool[MaxNoOfHealth + 1];
            int[] aspectres = new int[MaxNoOfAspects + 1];
            CreateFastClientArrays(aspectResultSet, levelResultSet, healthResultSet, healthvals, levelvals, aspectres);
            //set up arrays for fast matching
            foreach (DataRow rt in dtAspects.Rows)
            {
                ji = new JobItem();
                ji.Score = ScoreArticle(rt, healthvals, levelvals, aspectres, ref ji.MatchCat, ref ji.MatchMore);
                //get job score
                ji.JobRef = Convert.ToInt16(rt["OccNumber"].ToString());
                ji.JobTitle = rt["OccName"].ToString();
                if (((int)ji.MatchCat / 100) < 6)
                {
                    jl.Add(ji);
                };

            };
            //sort the list by score
            jl.Sort(delegate(JobItem x, JobItem y) { return Comparer.Default.Compare(y.Score, x.Score); });
            // we only want the top 40
            if (jl.Count > 40)
            {
                jl.RemoveRange(40, jl.Count - 40);
            };
            //prepare rank
            int i = 1;
            foreach (JobItem ji1 in jl)
            {
                ji1.Rank = i;
                i++;
            };
            //now we check against the clusters table
            //next section is more or less lifted from cluster.aspx
            DataTable dtCluster = CCLib.Cache.GetCachedDataTable("Cluster" + strSuffixCode , "select * from Clusters" + strSuffixCode + "_View");
            DataRow[] drsClusterCodes;
            string strClusterType = strCluster;
            string strSQL=strClusterType+"= '"+strClusterCode.Replace("'","''")+"' or "+strClusterType+" like '"+strClusterCode.Replace("'","''")+",%' or "+strClusterType+" like '%,"+strClusterCode.Replace("'","''")+"' or "+strClusterType+" like '%,"+strClusterCode.Replace("'","''")+",%'";
            drsClusterCodes = dtCluster.Select(strSQL);
            //yuk!! sequential search - need to check for better way
            JobList jlResultList = new JobList();
            JobItem jitmp;
            foreach (DataRow dr in drsClusterCodes)
            {
                int strOccNumber = (int)dr["OccNumber"]; //copy into local variable to keep things quick
                jitmp = jl.Find(delegate(JobItem ji1) { return ji1.JobRef == strOccNumber; });
                if (jitmp!=null) {jlResultList.Add(jitmp);};
            }
            jlResultList.Sort(delegate(JobItem x, JobItem y) { return Comparer.Default.Compare(y.Score, x.Score); });

            return (jlResultList);
        }
Exemplo n.º 17
0
        public static DataTable createComments(int intJobRef, string strSuffixCode, string strCountry,  AspectResultSet aspectResultSet, HealthResultSet healthResultSet, LevelResultSet levelResultSet, SkillsResultSet skillsResultSet)
        {
            string asComment = "";
            string geComment = "";
               // string htComment = "";
            string lvComment = "";
            string skcomment = "";

            int i,x,cd,sd,od,cdnm,sdnm,slvm,clvm;
            int tmpcat,cscomm,sscomm;
            string strTemp;
            string aspecttblname = strCountry;

            DataTable dtAspects = CCLib.Cache.GetCachedDataTableWithNoExpire("MM_ALL_JOBS_" + strSuffixCode, "SELECT tblAspects" + aspecttblname + ".OccNumber, Central, Secondary, ID, Other, Education, EssentialSkills, DesirableSkills, OccName FROM Jobinfo" + strSuffixCode + " INNER JOIN tblAspects" + aspecttblname + " ON Jobinfo" + strSuffixCode + ".OccNumber = tblAspects" + aspecttblname + ".OccNumber order by OccName");
            bool [] levelvals= new bool[MaxNoOfLevels+1];
            bool [] healthvals= new bool[MaxNoOfHealth+1];
            int [] aspectres= new int[MaxNoOfAspects+1] ;
            CreateFastClientArrays(aspectResultSet, levelResultSet, healthResultSet, healthvals, levelvals, aspectres);
            DataRow[] dr = dtAspects.Select("occnumber=" + intJobRef);
            //jm 02/11/2006 - added catch here..
            if (dr.Length > 0)
            {
            DataRow rt = dr[0]; //should probably catch this

            //score job
            JobItem ji = new JobItem();
            ji.Score = ScoreArticle(rt, healthvals, levelvals, aspectres, ref ji.MatchCat, ref ji.MatchMore);
            ji.JobRef = Convert.ToInt16(rt["OccNumber"].ToString());
            ji.JobTitle = rt["OccName"].ToString();

            //prepare general comment
            tmpcat = ji.MatchCat / 100;
            if ((ji.MatchMore) && (tmpcat != 7)) { geComment = geComment + "00"; };
            cscomm = 0;
            sscomm = 0;
            cd = 0;
            cdnm = 0;
            clvm = 0;
            sd = 0;
            sdnm = 0;
            slvm = 0;
            od = 0;
            // check for unanswered core and secondry and store dislikes and LVM counts
            strTemp = rt["Central"].ToString();

            for (i = 0; (i + 1) < strTemp.Length; i = i + 3)
            {
                x = aspectres[Convert.ToInt16(strTemp.Substring(i, 3))];
                switch (x)
                {
                    case 0: cscomm = cscomm + 1; break;
                    case 1: cd = cd + 1; break;
                    case 2: cd = cd + 1; break;
                    case 3: cdnm = cdnm + 1; break;
                    case 5: clvm = clvm + 1; break;
                    case 6: clvm = clvm + 1; break;
                }

            }

            strTemp = rt["Secondary"].ToString();

            for (i = 0; (i + 1) < strTemp.Length; i = i + 3)
            {
                x = aspectres[Convert.ToInt16(strTemp.Substring(i, 3))];
                switch (x)
                {
                    case 0: sscomm = sscomm + 1; break;
                    case 1: sd = sd + 1; break;
                    case 2: sd = sd + 1; break;
                    case 3: sdnm = sdnm + 1; break;
                    case 5: slvm = slvm + 1; break;
                    case 6: slvm = slvm + 1; break;
                }

            }

            strTemp = rt["Other"].ToString();

            for (i = 0; (i + 1) < strTemp.Length; i = i + 3)
            {
                x = aspectres[Convert.ToInt16(strTemp.Substring(i, 3))];
                switch (x)
                {
                    case 1: od = od + 1; break;
                    case 2: od = od + 1; break;
                }

            }

            //if unaswered core or secondry then return appropriate comment
            if (cscomm > 1) { geComment = geComment + "07"; }
            else if (cscomm == 1) { geComment = geComment + "08"; }
            else if (sscomm > 1) { geComment = geComment + "09"; }
            else if (sscomm == 1) { geComment = geComment + "10"; };
            if (!ji.MatchMore)
            {
                switch (tmpcat)
                {
                    case 1: geComment = geComment + "01"; break;
                    case 2: geComment = geComment + "02"; break;
                    case 3: geComment = geComment + "03"; break;
                    case 4: geComment = geComment + "04"; break;
                    case 5: geComment = geComment + "04"; break;
                    case 6: geComment = geComment + "05"; break;
                    case 7: geComment = geComment + "05"; break;
                    case 8: geComment = geComment + "06"; break;
                };
            };

            //end of general comment
            //aspect comment
            asComment = "";
            tmpcat = (ji.MatchCat % 100);
            if (ji.MatchMore)
            {
                asComment = "00";
                // return positive comments
                if (clvm == 1) { asComment = asComment + "10"; };
                if (clvm > 1) { asComment = asComment + "11"; };
                if (slvm == 1) { asComment = asComment + "12"; };
                if (slvm > 1) { asComment = asComment + "13"; };
            }
            else
            {
                switch (tmpcat)
                {
                    case 1: asComment = "01"; break;
                    case 2: asComment = "02"; break;
                    case 3: asComment = "03"; break;
                    case 4: asComment = "04"; break;
                    case 5: asComment = "05"; break;
                }
                //return negative comments
                if (cd > 1) { asComment = asComment + "01"; };
                if (cd == 1) { asComment = asComment + "02"; };
                if (cdnm > 1) { asComment = asComment + "03"; };
                if (cdnm == 1) { asComment = asComment + "04"; };
                if (sd > 1) { asComment = asComment + "05"; };
                if (sd == 1) { asComment = asComment + "06"; };
                if (sdnm > 3) { asComment = asComment + "07"; };
                if (od > 1) { asComment = asComment + "08"; };
                if (od == 1) { asComment = asComment + "09"; };
            };
            //end of aspect comments
            //start of level comments
            lvComment = "";
            int iLvlCount = 0;
            foreach (LevelResult lr in levelResultSet)
            {
                iLvlCount = (lr.LevelResponse == true) ? iLvlCount + 1 : iLvlCount;
            }
            if (iLvlCount == 0) { lvComment = "07"; }//mrm changed to use flags not levelResultSet.Count
            else
            {
                bool accept = true;      //if all levels are selected
                for (i = 1; i <= 5; i++) { if (levelvals[i] == false) { accept = false; };};
                if (accept == true) { lvComment = "06"; }
                else                  //else calc comments
                {
                    //mrm need to look at flags if (levelResultSet.Count > 1) { lvComment = "00"; };
                    if (iLvlCount > 1) { lvComment = "00"; };
                    x = 0;
                    for (i = 1; i <= 5; i++)
                    {

                        if (levelvals[i] == true) { x = i; };
                    }//get highest level
                    switch (rt["Education"].ToString().Substring(x - 1, 1))//mrm 19/4/2006 bug fix - was x
                    {
                        case "+": lvComment = lvComment + "01"; break;
                        case "A": lvComment = lvComment + "02"; break;
                        case "N": lvComment = lvComment + "03"; break;
                        case "B": lvComment = lvComment + "04"; break;
                        case "-": lvComment = lvComment + "05"; break;
                    }

                }
            };
            //end of level comments
            //skills comment

            int e1 = 0;
            int e2 = 0;
            int e3 = 0;
            int e4 = 0;
            int e5 = 0;
            int e0 = 0;
            int d1 = 0;
            int d2 = 0;
            int d3 = 0;
            int d4 = 0;
            int d5 = 0;
            int d0 = 0;
            if (rt["EssentialSkills"].ToString().Length > 0)
            {
                for (i = 0; i < rt["EssentialSkills"].ToString().Length; i = i + 3)
                {
                    SkillsResult skillsResult = skillsResultSet.Find(
                                                          delegate(SkillsResult sr)
                                                          {
                                                              return sr.SkillsRef == Convert.ToInt32(rt["EssentialSkills"].ToString().Substring(i, 3));
                                                          }
                                                          );
                    if (skillsResult != null)
                    {
                        switch (skillsResult.SkillsResponse)
                        {
                            case 0: e0 = e0 + 1; break;
                            case 1: e1 = e1 + 1; break;
                            case 2: e2 = e2 + 1; break;
                            case 3: e3 = e3 + 1; break;
                            case 4: e4 = e4 + 1; break;
                            case 5: e5 = e5 + 1; break;
                            default: e0 = e0 + 1; break;
                        }
                    }
                    else { e0 = e0 + 1; };
                }
            }
            if (rt["DesirableSkills"].ToString().Length > 0)
            {
                for (i = 0; i < rt["DesirableSkills"].ToString().Length; i = i + 3)
                {
                    SkillsResult skillsResult = skillsResultSet.Find(
                                                          delegate(SkillsResult sr)
                                                          {
                                                              return sr.SkillsRef == Convert.ToInt32(rt["DesirableSkills"].ToString().Substring(i, 3));
                                                          }
                                                          );
                    if (skillsResult != null)
                    {
                        switch (skillsResult.SkillsResponse)
                        {
                            case 0: d0 = d0 + 1; break;
                            case 1: d1 = d1 + 1; break;
                            case 2: d2 = d2 + 1; break;
                            case 3: d3 = d3 + 1; break;
                            case 4: d4 = d4 + 1; break;
                            case 5: d5 = d5 + 1; break;
                            default: d0 = d0 + 1; break;
                        }
                    }
                    else { d0 = d0 + 1; };
                }
            }
            // get skills cat
            JobList jl = new JobList();
            jl.Add(ji);
            getSkillsCategories(strCountry, jl, skillsResultSet);

            skcomment = "0" + ji.SkillsCat.ToString() + '0' + ji.SkillsCat.ToString();
            if (e2 == 1) { skcomment = skcomment + "01"; };
            if (e2 == 2) { skcomment = skcomment + "02"; };
            if (e2 == 3) { skcomment = skcomment + "03"; };
            if (e2 >= 4) { skcomment = skcomment + "04"; };
            if (e1 == 1) { skcomment = skcomment + "05"; };
            if (e1 == 2) { skcomment = skcomment + "06"; };
            if (e1 == 3) { skcomment = skcomment + "07"; };
            if (e1 == 4) { skcomment = skcomment + "08"; };
            if (e1 > 4) { skcomment = skcomment + "09"; };
            if (d2 == 1) { skcomment = skcomment + "10"; };
            if (d2 == 2) { skcomment = skcomment + "11"; };
            if (d2 == 3) { skcomment = skcomment + "12"; };
            if (d2 == 4) { skcomment = skcomment + "13"; };
            if (d2 == 5) { skcomment = skcomment + "14"; };
            if (d2 > 5) { skcomment = skcomment + "15"; };
            if (d1 == 1) { skcomment = skcomment + "16"; };
            if (d1 == 2) { skcomment = skcomment + "17"; };
            if (d1 == 3) { skcomment = skcomment + "18"; };
            if (d1 == 4) { skcomment = skcomment + "19"; };
            if (d1 == 5) { skcomment = skcomment + "20"; };
            if (d1 > 5) { skcomment = skcomment + "21"; };

            if (skcomment == "") { skcomment = "00"; };

            //end skills comment
            DataTable dt = new DataTable();
            dt.Columns.Add("General", typeof(string));
            dt.Columns.Add("Aspect", typeof(string));
            dt.Columns.Add("Level", typeof(string));
            dt.Columns.Add("Skill", typeof(string));
            dt.Rows.Add();
            dt.Rows[0]["General"] = geComment;
            dt.Rows[0]["Aspect"] = asComment;
            dt.Rows[0]["Level"] = lvComment;
            dt.Rows[0]["Skill"] = skcomment;
            return (dt);
            }
            else
            {
            //we didn't find the job aspects
            DataTable dt = new DataTable();
            return (dt);

            }
        }
Exemplo n.º 18
0
 public void AddJobItem(JobItem job)
 {
     JobList.Add(job.job.ID, job);
 }