Beispiel #1
0
        ///<summary>This is the load method for the class. It initializes the engineer tiles by creating a model and binding it to the ItemsControl template in the xaml code.</summary>
        public JobManagerDashboardTiles()
        {
            InitializeComponent();
            //labelActiveJobs.Foreground=
            Signalods.SubscribeSignalProcessor(this);
            GridToolbar.Visibility     = Visibility.Hidden;
            EngSpecificInfo.Visibility = Visibility.Collapsed;
            Jobs.FillInMemoryLists(_listJobsAll);
            _engInfoList.Add(
                new EngInformation {
                EngName        = "Total Unfinished Quote Jobs: " + JobQuotes.GetUnfinishedJobQuotes().Count,
                EngClockStatus = "Total Unfinished Quote: $" + JobQuotes.GetUnfinishedJobQuotes().Sum(x => PIn.Double(x.Amount)),
                EngWorkStatus  = "Total Unfinished Jobs: " + _listJobsAll.Where(x => x.PhaseCur != JobPhase.Complete && x.Priority != Defs.GetDefsForCategory(DefCat.JobPriorities, true).FirstOrDefault(y => y.ItemValue.Contains("OnHold")).DefNum).ToList().Count,
                StatField1     = "Total Jobs being worked on: " + _listJobsAll.Where(x => x.OwnerAction == JobAction.WriteCode).ToList().Count
            });
            //list of jobs in WriteCode status
            List <Job> listWriteCodeJobs = _listJobsAll.Where(x => x.OwnerAction == JobAction.WriteCode && x.Priority != Defs.GetDefsForCategory(DefCat.JobPriorities, true).FirstOrDefault(y => y.ItemValue.Contains("OnHold")).DefNum).ToList();

            foreach (Userod user in Userods.GetUsersByJobRole(JobPerm.Engineer, false))
            {
                if (!_listActualEngineers.Contains(user.UserName))
                {
                    continue;
                }
                List <TextBlock> jobTitles = new List <TextBlock>();
                //get only write code jobs
                List <string> listEngJobs = listWriteCodeJobs.Where(x => x.UserNumEngineer == user.UserNum).Select(x => x.Title).ToList();
                foreach (string j in listEngJobs)
                {
                    //TODO: Template this in xaml and pass in the object for the template to autogen, save for after initial working commit.
                    TextBlock tb = new TextBlock();
                    tb.Text         = j;
                    tb.TextWrapping = TextWrapping.WrapWithOverflow;
                    jobTitles.Add(tb);
                }
                string needsWork = "";
                int    devHours  = 0;          //listWriteCodeJobs.Where(x => x.UserNumEngineer==user.UserNum).Sum(x => x.MinutesEstimate);
                if (devHours < 20)
                {
                    needsWork = "Needs Work";
                }
                else
                {
                    needsWork = "~" + devHours.ToString() + " Dev Hours";
                }
                _engInfoList.Add(new EngInformation {
                    EngName        = user.UserName,
                    EngClockStatus = ClockEvents.GetLastEvent(user.EmployeeNum).ClockStatus.ToString(),
                    EngWorkStatus  = needsWork,
                    EngJobs        = jobTitles
                });
            }
            EngTiles.ItemsSource = _engInfoList;
        }