private void FillGridNoHours() { List <Job> listJobsInDevelopmentNoHours = _listJobsAll.Where(x => x.HoursActual <= 0 && x.PhaseCur.In(JobPhase.Development) && !x.Category.In(JobCategory.Bug, JobCategory.Query, JobCategory.Conversion, JobCategory.Research)).ToList(); gridNoHours.BeginUpdate(); gridNoHours.Columns.Clear(); gridNoHours.Columns.Add(new ODGridColumn("Job", 0)); gridNoHours.Columns.Add(new ODGridColumn("Owner", 70) { TextAlign = HorizontalAlignment.Center }); gridNoHours.Columns.Add(new ODGridColumn("Owner Action", 90)); gridNoHours.Rows.Clear(); foreach (Job job in listJobsInDevelopmentNoHours) { ODGridRow row = new ODGridRow() { Tag = job }; row.Cells.Add(job.ToString()); row.Cells.Add(Userods.GetName(job.OwnerNum)); row.Cells.Add(job.OwnerAction.GetDescription()); gridNoHours.Rows.Add(row); } gridNoHours.EndUpdate(); }
private void FillGridQuoteNotStarted() { List <Job> listJobsQuoteNotStarted = _listJobsAll.Where(x => x.ListJobQuotes.Exists(y => y.IsCustomerApproved == true) && x.HoursActual <= 0 && !x.PhaseCur.In(JobPhase.Cancelled, JobPhase.Complete, JobPhase.Documentation) && !x.Category.In(JobCategory.Bug, JobCategory.Query, JobCategory.Conversion, JobCategory.Research)).ToList(); gridQuoteNotStarted.BeginUpdate(); gridQuoteNotStarted.Columns.Clear(); gridQuoteNotStarted.Columns.Add(new ODGridColumn("Job", 0)); gridQuoteNotStarted.Columns.Add(new ODGridColumn("Owner", 70) { TextAlign = HorizontalAlignment.Center }); gridQuoteNotStarted.Columns.Add(new ODGridColumn("Owner Action", 90)); gridQuoteNotStarted.Rows.Clear(); foreach (Job job in listJobsQuoteNotStarted) { ODGridRow row = new ODGridRow() { Tag = job }; row.Cells.Add(job.ToString()); row.Cells.Add(Userods.GetName(job.OwnerNum)); row.Cells.Add(job.OwnerAction.GetDescription()); gridQuoteNotStarted.Rows.Add(row); } gridQuoteNotStarted.EndUpdate(); }
///<summary>Fills with jobs that are in development and attached to the selected sprint. Ordered by last timelog.</summary> private void FillGridActiveDevelopment() { gridActiveDevelopment.BeginUpdate(); gridActiveDevelopment.ListGridColumns.Clear(); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("Priority",90,HorizontalAlignment.Center)); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("Last Updated",90,HorizontalAlignment.Center)); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("Owner",55,HorizontalAlignment.Center)); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("Owner Action",110)); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("EstHrs",60,HorizontalAlignment.Center,GridSortingStrategy.AmountParse)); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("ActHrs",60,HorizontalAlignment.Center,GridSortingStrategy.AmountParse)); gridActiveDevelopment.ListGridColumns.Add(new GridColumn("",300)); gridActiveDevelopment.ListGridRows.Clear(); List<Job> listActiveJobs=_listAttachedJobs.Where(x => x.PhaseCur==JobPhase.Development).OrderByDescending(x => x.ListJobTimeLogs.Count>0?x.ListJobTimeLogs.Select(y => y.DateTStamp).Max():DateTime.MinValue) .ThenBy(x => _listJobPriorities.FirstOrDefault(y => y.DefNum==x.Priority).ItemOrder).ToList(); foreach(Job job in listActiveJobs) { Color backColor=Color.White; Def jobPriority=_listJobPriorities.FirstOrDefault(y => y.DefNum==job.Priority); gridActiveDevelopment.ListGridRows.Add( new GridRow( new GridCell(jobPriority.ItemName) { ColorBackG=jobPriority.ItemColor, ColorText=(job.Priority==_listJobPriorities.FirstOrDefault(y => y.ItemValue.Contains("Urgent")).DefNum) ? Color.White : Color.Black, }, new GridCell(job.OwnerNum==0 ? "-" : Userods.GetName(job.OwnerNum)), new GridCell(job.OwnerAction.GetDescription()), new GridCell(job.HoursEstimate.ToString()), new GridCell(job.HoursActual.ToString()), new GridCell(job.ToString()) ) { Tag=job, ColorBackG=backColor } ); } gridActiveDevelopment.EndUpdate(); }
private void FormTaskNoteEdit_Load(object sender, EventArgs e) { textDateTime.Text = TaskNoteCur.DateTimeNote.ToString(); textUser.Text = Userods.GetName(TaskNoteCur.UserNum); textNote.Text = TaskNoteCur.Note; this.Top += 150; }
///<summary>Returns the commit message for this job. Job should not be null.</summary> private string GetCommitMessage(Job job) { string description; if (job.Category == JobCategory.Bug) { Bug bug = Bugs.GetOne(job.ListJobLinks.Where(x => x.LinkType == JobLinkType.Bug).FirstOrDefault()?.FKey ?? 0); string bugDescription = ""; if (bug != null) { bugDescription = bug.Description.Replace("\"", ""); } else { bugDescription = job.Title; } description = job.Category.ToString().Substring(0, 1) + job.JobNum + " - " + bugDescription; } else { description = job.Category.ToString().Substring(0, 1) + job.JobNum + " - " + job.Title; } string reviewers = string.Join(", ", job.ListJobReviews .Where(x => x.ReviewStatus == JobReviewStatus.Done || x.ReviewStatus == JobReviewStatus.NeedsAdditionalReview) .DistinctBy(x => x.ReviewerNum) .Select(x => Userods.GetName(x.ReviewerNum)) .OrderBy(x => x) .ToList()); return($"{POut.String(description)}\r\nBackported to: {POut.String(job.JobVersion)}\r\nReviewed by: {POut.String(reviewers)}"); }
private void FormProcBroken_Load(object sender, EventArgs e) { textDateEntry.Text = _procCur.DateEntryC.ToShortDateString(); textProcDate.Text = _procCur.ProcDate.ToShortDateString(); textAmount.Text = _procCur.ProcFee.ToString("f"); _selectedProvNum = _procCur.ProvNum; comboProv.SelectedIndex = -1; //initializes to 0; must be -1 for fillComboProv if (PrefC.HasClinicsEnabled) { _listClinics = new List <Clinic>() { new Clinic() { Abbr = Lan.g(this, "None") } }; //Seed with "None" Clinics.GetForUserod(Security.CurUser).ForEach(x => _listClinics.Add(x)); //do not re-organize from cache. They could either be alphabetizeded or sorted by item order. _listClinics.ForEach(x => comboClinic.Items.Add(x.Abbr)); _selectedClinicNum = _procCur.ClinicNum; comboClinic.IndexSelectOrSetText(_listClinics.FindIndex(x => x.ClinicNum == _selectedClinicNum), () => { return(Clinics.GetAbbr(_selectedClinicNum)); }); } else { labelClinic.Visible = false; comboClinic.Visible = false; fillComboProv(); } textUser.Text = Userods.GetName(_procCur.UserNum); textChartNotes.Text = _procCur.Note; textAccountNotes.Text = _procCur.BillingNote; }
private void FillGridHigh() { List <Job> listHighPriorityJobs = _listJobsAll.Where(x => x.Priority.In(591, 601) && //High Priority or Urgent !x.PhaseCur.In(JobPhase.Cancelled, JobPhase.Complete, JobPhase.Documentation) && !x.Category.In(JobCategory.Bug, JobCategory.Query, JobCategory.Conversion, JobCategory.Research)).ToList(); gridHighPriorityJobs.BeginUpdate(); gridHighPriorityJobs.Columns.Clear(); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Job", 0)); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Owner", 70) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Owner Action", 90)); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Engineer", 75) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Hrs Est", 75) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Hrs So Far", 75) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Hrs Last 7 Days", 90) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Last Updated", 90) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Columns.Add(new ODGridColumn("Expert", 75) { TextAlign = HorizontalAlignment.Center }); gridHighPriorityJobs.Rows.Clear(); foreach (Job job in listHighPriorityJobs) { ODGridRow row = new ODGridRow() { Tag = job }; row.Cells.Add(job.ToString()); row.Cells.Add(Userods.GetName(job.OwnerNum)); row.Cells.Add(job.OwnerAction.GetDescription()); row.Cells.Add(Userods.GetName(job.UserNumEngineer)); row.Cells.Add(job.TimeEstimate.TotalHours.ToString()); row.Cells.Add(job.HoursActual.ToString()); row.Cells.Add(job.ListJobTimeLogs.Where(x => x.DateTStamp >= DateTime.Today.AddDays(-7)).Sum(y => y.TimeReview.TotalHours).ToString()); DateTime lastUpdated = job.ListJobLogs.Where(x => x.Description != "Job Viewed").Select(y => y.DateTimeEntry).OrderByDescending(x => x.Ticks).FirstOrDefault(); row.Cells.Add(lastUpdated == DateTime.MinValue?"N/A":lastUpdated.ToShortDateString()); row.Cells.Add(Userods.GetName(job.UserNumExpert)); gridHighPriorityJobs.Rows.Add(row); } gridHighPriorityJobs.EndUpdate(); }
private void FillGrid() { EmailAddresses.RefreshCache(); _listEmailAddresses = EmailAddresses.GetDeepCopy(); //Add user specific email addresses to the list List <Userod> listUsers = new List <Userod>(); if (Security.IsAuthorized(Permissions.SecurityAdmin, true) && !IsSelectionMode) { listUsers.AddRange(Userods.GetUsers()); //If authorized, get all non-hidden users. } else { listUsers.Add(Security.CurUser); //Otherwise, just this user. } foreach (Userod user in listUsers) { EmailAddress userAddress = EmailAddresses.GetForUser(user.UserNum); if (userAddress != null) { _listEmailAddresses.Insert(0, userAddress); } } gridMain.BeginUpdate(); gridMain.ListGridColumns.Clear(); GridColumn col; col = new GridColumn(Lan.g(this, "User Name"), 240); gridMain.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Sender Address"), 270); gridMain.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "User"), 135); gridMain.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Default"), 50, HorizontalAlignment.Center); gridMain.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Notify"), 0, HorizontalAlignment.Center); gridMain.ListGridColumns.Add(col); gridMain.ListGridRows.Clear(); GridRow row; foreach (EmailAddress emailAddress in _listEmailAddresses) { row = new GridRow(); row.Cells.Add(emailAddress.EmailUsername); row.Cells.Add(emailAddress.SenderAddress); row.Cells.Add(Userods.GetName(emailAddress.UserNum)); row.Cells.Add((emailAddress.EmailAddressNum == PrefC.GetLong(PrefName.EmailDefaultAddressNum))?"X":""); row.Cells.Add((emailAddress.EmailAddressNum == PrefC.GetLong(PrefName.EmailNotifyAddressNum))?"X":""); row.Tag = emailAddress; gridMain.ListGridRows.Add(row); } gridMain.EndUpdate(); }
private void FormJobNoteEdit_Load(object sender, EventArgs e) { textDateTime.Text = _jobNote.DateTimeNote.ToString(); textUser.Text = Userods.GetName(_jobNote.UserNum); textNote.Text = _jobNote.Note; if (Security.CurUser.UserNum != _jobNote.UserNum) { textNote.ReadOnly = true; butOK.Enabled = false; butDelete.Enabled = false; } }
/// <summary></summary> private void FillGridMain() { gridMain.BeginUpdate(); gridMain.ListGridColumns.Clear(); gridMain.ListGridRows.Clear(); gridMain.ListGridColumns.AddRange(new[] { new GridColumn(Lan.g(this, "User"), 70), new GridColumn(Lan.g(this, "Saved"), 80) }); gridMain.ListGridRows.AddRange(WikiListHists.GetByNameNoContent(ListNameCur) .Select(x => new GridRow(Userods.GetName(x.UserNum), x.DateTimeSaved.ToString()) { Tag = x })); gridMain.EndUpdate(); }
private void FormTaskNoteEdit_Load(object sender, EventArgs e) { textDateTime.Text = TaskNoteCur.DateTimeNote.ToString(); textUser.Text = Userods.GetName(TaskNoteCur.UserNum); textNote.Text = TaskNoteCur.Note; this.Top += 150; if (TaskNoteCur.IsNew) { textDateTime.ReadOnly = true; } else if (!Security.IsAuthorized(Permissions.TaskEdit)) //Tasknotes are not editable unless user has TaskEdit permission. { butOK.Enabled = false; butDelete.Enabled = false; } }
private void FormProcBroken_Load(object sender, EventArgs e) { textDateEntry.Text = _procCur.DateEntryC.ToShortDateString(); textProcDate.Text = _procCur.ProcDate.ToShortDateString(); textAmount.Text = _procCur.ProcFee.ToString("f"); comboClinic.SelectedClinicNum = _procCur.ClinicNum; fillComboProv(); comboProv.SetSelectedProvNum(_procCur.ProvNum); textUser.Text = Userods.GetName(_procCur.UserNum); textChartNotes.Text = _procCur.Note; textAccountNotes.Text = _procCur.BillingNote; labelAmountDescription.Text = ""; if (_isNonRefundable) { labelAmountDescription.Text = AmountTotal.ToString("c") + ": Non-Refundable portion"; } }
/// <summary></summary> private void FillGrid() { gridMain.BeginUpdate(); gridMain.Columns.Clear(); ODGridColumn col=new ODGridColumn(Lan.g(this,"User"),70); gridMain.Columns.Add(col); col=new ODGridColumn(Lan.g(this,"Last Saved"),80); gridMain.Columns.Add(col); gridMain.Rows.Clear(); _listWikiPage=WikiPages.GetDraftsByTitle(OwnerForm.WikiPageCur.PageTitle); for(int i=0;i<_listWikiPage.Count;i++) { ODGridRow row=new ODGridRow(); row.Cells.Add(Userods.GetName(_listWikiPage[i].UserNum)); row.Cells.Add(_listWikiPage[i].DateTimeSaved.ToString()); gridMain.Rows.Add(row); } gridMain.EndUpdate(); }
/// <summary></summary> private void FillGridMain() { gridMain.BeginUpdate(); gridMain.Columns.Clear(); ODGridColumn col = new ODGridColumn(Lan.g(this, "User"), 70); gridMain.Columns.Add(col); col = new ODGridColumn(Lan.g(this, "Saved"), 80); gridMain.Columns.Add(col); gridMain.Rows.Clear(); _listWikiListHists = WikiListHists.GetByName(ListNameCur); for (int i = 0; i < _listWikiListHists.Count; i++) { ODGridRow row = new ODGridRow(); row.Cells.Add(Userods.GetName(_listWikiListHists[i].UserNum)); row.Cells.Add(_listWikiListHists[i].DateTimeSaved.ToString()); gridMain.Rows.Add(row); } gridMain.EndUpdate(); }
private void FillGridOld() { List <Job> listJobsOld = _listJobsAll.Where(x => x.DateTimeEntry <= DateTime.Now.AddYears(-1) && !x.PhaseCur.In(JobPhase.Cancelled, JobPhase.Complete, JobPhase.Documentation) && !x.Category.In(JobCategory.Bug, JobCategory.Query, JobCategory.Conversion, JobCategory.Research)).ToList(); gridOldJobs.BeginUpdate(); gridOldJobs.Columns.Clear(); gridOldJobs.Columns.Add(new ODGridColumn("Job", 0)); gridOldJobs.Columns.Add(new ODGridColumn("DateEntry", 80) { TextAlign = HorizontalAlignment.Center }); gridOldJobs.Columns.Add(new ODGridColumn("Last Updated", 80) { TextAlign = HorizontalAlignment.Center }); gridOldJobs.Columns.Add(new ODGridColumn("Owner", 70) { TextAlign = HorizontalAlignment.Center }); gridOldJobs.Rows.Clear(); foreach (Job job in listJobsOld) { ODGridRow row = new ODGridRow() { Tag = job }; row.Cells.Add(job.ToString()); row.Cells.Add(job.DateTimeEntry.ToShortDateString()); DateTime lastUpdated = job.ListJobLogs.Where(x => x.Description != "Job Viewed").Select(y => y.DateTimeEntry).OrderByDescending(x => x.Ticks).FirstOrDefault(); row.Cells.Add(lastUpdated == DateTime.MinValue?"N/A":lastUpdated.ToShortDateString()); row.Cells.Add(Userods.GetName(job.OwnerNum)); gridOldJobs.Rows.Add(row); } gridOldJobs.EndUpdate(); }
/// <summary></summary> private void FillGrid() { gridMain.BeginUpdate(); gridMain.Columns.Clear(); ODGridColumn col = new ODGridColumn(Lan.g(this, "User"), 70); gridMain.Columns.Add(col); col = new ODGridColumn(Lan.g(this, "Del"), 25); gridMain.Columns.Add(col); col = new ODGridColumn(Lan.g(this, "Saved"), 80); gridMain.Columns.Add(col); gridMain.Rows.Clear(); ListWikiPageHists = WikiPageHists.GetByTitle(PageTitleCur); ListWikiPageHists.Add(WikiPages.PageToHist(WikiPages.GetByTitle(PageTitleCur))); for (int i = 0; i < ListWikiPageHists.Count; i++) { ODGridRow row = new ODGridRow(); row.Cells.Add(Userods.GetName(ListWikiPageHists[i].UserNum)); row.Cells.Add((ListWikiPageHists[i].IsDeleted?"X":"")); row.Cells.Add(ListWikiPageHists[i].DateTimeSaved.ToString()); gridMain.Rows.Add(row); } gridMain.EndUpdate(); }
private void FillGridOverEst() { List <Job> listJobsOverEst = _listJobsAll.Where(x => x.TimeEstimate.TotalHours < x.HoursActual && !x.PhaseCur.In(JobPhase.Cancelled, JobPhase.Complete, JobPhase.Documentation) && !x.Category.In(JobCategory.Bug, JobCategory.Query, JobCategory.Conversion, JobCategory.Research)).ToList(); gridOverEstimate.BeginUpdate(); gridOverEstimate.Columns.Clear(); gridOverEstimate.Columns.Add(new ODGridColumn("Job", 0)); gridOverEstimate.Columns.Add(new ODGridColumn("Owner", 60) { TextAlign = HorizontalAlignment.Center }); gridOverEstimate.Columns.Add(new ODGridColumn("Hrs Est", 60) { TextAlign = HorizontalAlignment.Center }); gridOverEstimate.Columns.Add(new ODGridColumn("Hrs So Far", 60) { TextAlign = HorizontalAlignment.Center }); gridOverEstimate.Rows.Clear(); foreach (Job job in listJobsOverEst) { ODGridRow row = new ODGridRow() { Tag = job }; row.Cells.Add(job.ToString()); row.Cells.Add(Userods.GetName(job.OwnerNum)); row.Cells.Add(job.TimeEstimate.TotalHours.ToString()); row.Cells.Add(job.HoursActual.ToString()); gridOverEstimate.Rows.Add(row); } gridOverEstimate.EndUpdate(); }
private void FillGridMain() { string[] searchTokens = textSearch.Text.ToLower().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); long[] userNums = new long[0]; JobCategory[] jobCats = new JobCategory[0]; JobPhase[] jobPhases = new JobPhase[0]; long[] jobPriorities = new long[0]; if (listBoxUsers.SelectedIndices.Count > 0 && !listBoxUsers.SelectedIndices.Contains(0)) { userNums = listBoxUsers.SelectedIndices.Cast <int>().Select(x => _listUsers[x - 1].UserNum).ToArray(); } if (listBoxCategory.SelectedIndices.Count > 0 && !listBoxCategory.SelectedIndices.Contains(0)) { jobCats = listBoxCategory.SelectedIndices.Cast <int>().Select(x => (JobCategory)(x - 1)).ToArray(); } if (listBoxPhases.SelectedIndices.Count > 0 && !listBoxPhases.SelectedIndices.Contains(0)) { jobPhases = listBoxPhases.SelectedIndices.Cast <int>().Select(x => (JobPhase)(x - 1)).ToArray(); } if (listBoxPriorities.SelectedIndices.Count > 0 && !listBoxPriorities.SelectedIndices.Contains(0)) { jobPriorities = listBoxPriorities.GetListSelected <Def>().Select(x => x.DefNum).ToArray(); } Action actionCloseProgress = ODProgress.Show(ODEventType.Job, typeof(JobEvent), "Getting job data..."); #region Get Missing Data //This entire section will go out to the database and get any data that is unknown based on some of the filters. //The other filters will be applied later via the cached lists. try { List <Job> listJobs = Jobs.GetForSearch(dateFrom.Value, dateTo.Value, jobPhases.ToList(), jobPriorities.ToList(), _listJobsAll.Select(x => x.JobNum).ToList()); Jobs.FillInMemoryLists(listJobs, true); _listJobsAll.AddRange(listJobs); } catch (OutOfMemoryException oome) { actionCloseProgress(); oome.DoNothing(); MsgBox.Show(this, "Not enough memory to complete the search. Please refine search filters."); return; } //Only get the feature request entries that we care about. JobEvent.Fire(ODEventType.Job, "Getting feature request data..."); List <long> listFeatureRequestNums = _listJobsAll.SelectMany(x => x.ListJobLinks) .Where(x => x.LinkType == JobLinkType.Request) .Select(x => x.FKey) .Distinct() .ToList(); //Don't download any feature requests that we already know about. listFeatureRequestNums.RemoveAll(x => x.In(_listFeatureRequestsAll.Select(y => y.FeatReqNum))); if (!listFeatureRequestNums.IsNullOrEmpty()) { _listFeatureRequestsAll.AddRange(FeatureRequests.GetAll(listFeatureRequestNums)); } //Only get the bug entries that we care about. JobEvent.Fire(ODEventType.Job, "Getting bug data..."); List <long> listBugIds = _listJobsAll.SelectMany(x => x.ListJobLinks) .Where(x => x.LinkType == JobLinkType.Bug) .Select(x => x.FKey) .Distinct() .ToList(); //Don't download any bugs that we already know about. listBugIds.RemoveAll(x => x.In(_listBugsAll.Select(y => y.BugId))); if (!listBugIds.IsNullOrEmpty()) { _listBugsAll.AddRange(Bugs.GetMany(listBugIds)); } #endregion JobEvent.Fire(ODEventType.Job, "Filling grid..."); gridMain.BeginUpdate(); gridMain.ListGridColumns.Clear(); gridMain.ListGridColumns.Add(new GridColumn("Job\r\nNum", 50, GridSortingStrategy.AmountParse)); gridMain.ListGridColumns.Add(new GridColumn("Priority", 50, HorizontalAlignment.Center)); gridMain.ListGridColumns.Add(new GridColumn("Phase", 85)); gridMain.ListGridColumns.Add(new GridColumn("Category", 80)); gridMain.ListGridColumns.Add(new GridColumn("Job Title", -1)); gridMain.ListGridColumns.Add(new GridColumn("Version", 80)); gridMain.ListGridColumns.Add(new GridColumn("Est. Version", 80)); gridMain.ListGridColumns.Add(new GridColumn("Expert", 75)); gridMain.ListGridColumns.Add(new GridColumn("Engineer", 75)); gridMain.ListGridColumns.Add(new GridColumn("Est.\r\nHours", 60, GridSortingStrategy.AmountParse)); gridMain.ListGridColumns.Add(new GridColumn("Act.\r\nHours", 60, GridSortingStrategy.AmountParse)); gridMain.ListGridColumns.Add(new GridColumn("Job\r\nMatch", 45, HorizontalAlignment.Center)); gridMain.ListGridColumns.Add(new GridColumn("Bug\r\nMatch", 45, HorizontalAlignment.Center)); gridMain.ListGridColumns.Add(new GridColumn("FR\r\nMatch", 45, HorizontalAlignment.Center)); gridMain.ListGridRows.Clear(); _listJobsFiltered = new List <Job>(); foreach (Job jobCur in _listJobsAll) { if (jobCats.Length > 0 && !jobCats.Contains(jobCur.Category)) { continue; } if (jobPhases.Length > 0 && !jobPhases.Contains(jobCur.PhaseCur)) { continue; } if (jobPriorities.Length > 0 && !jobPriorities.Contains(jobCur.Priority)) { continue; } if (userNums.Length > 0 && !userNums.All(x => Jobs.GetUserNums(jobCur).Contains(x))) { continue; } if (!jobCur.DateTimeEntry.Between(dateFrom.Value, dateTo.Value)) { continue; } bool isJobMatch = false; bool isBugMatch = false; bool isFeatureReqMatch = false; if (searchTokens.Length > 0) { bool addRow = false; List <Bug> listBugs = jobCur.ListJobLinks.FindAll(x => x.LinkType == JobLinkType.Bug) .Select(x => _listBugsAll.FirstOrDefault(y => x.FKey == y.BugId)) .Where(x => x != null) .ToList(); List <FeatureRequest> listFeatures = jobCur.ListJobLinks.FindAll(x => x.LinkType == JobLinkType.Request) .Select(x => _listFeatureRequestsAll.FirstOrDefault(y => x.FKey == y.FeatReqNum)) .Where(x => x != null) .ToList(); foreach (string token in searchTokens.Distinct()) { bool isFound = false; //JOB MATCHES if (jobCur.Title.ToLower().Contains(token) || jobCur.Implementation.ToLower().Contains(token) || jobCur.Requirements.ToLower().Contains(token) || jobCur.Documentation.ToLower().Contains(token) || jobCur.JobNum.ToString().Contains(token)) { isFound = true; isJobMatch = true; } //BUG MATCHES if (!isFound || !isBugMatch) { if (listBugs.Any(x => x.Description.ToLower().Contains(token) || x.Discussion.ToLower().Contains(token))) { isFound = true; isBugMatch = true; } } //FEATURE REQUEST MATCHES if (!isFound || !isFeatureReqMatch) { if (listFeatures.Any(x => x.Description.Contains(token) || x.FeatReqNum.ToString().ToLower().Contains(token))) { isFound = true; isFeatureReqMatch = true; } } addRow = isFound; if (!isFound) { break; //stop looking for additional tokens, we didn't find this one. } } if (!addRow) { continue; //we did not find one of the search terms. } } _listJobsFiltered.Add(jobCur); Def jobPriority = _listJobPriorities.FirstOrDefault(y => y.DefNum == jobCur.Priority); GridRow row = new GridRow(); row.Cells.Add(jobCur.JobNum.ToString()); row.Cells.Add(new GridCell(jobPriority.ItemName) { ColorBackG = jobPriority.ItemColor, ColorText = (jobCur.Priority == _listJobPriorities.FirstOrDefault(y => y.ItemValue.Contains("Urgent")).DefNum) ? Color.White : Color.Black, }); row.Cells.Add(jobCur.PhaseCur.ToString()); row.Cells.Add(jobCur.Category.ToString()); row.Cells.Add(jobCur.Title); row.Cells.Add(jobCur.JobVersion.ToString()); row.Cells.Add(jobCur.ProposedVersion.ToString()); row.Cells.Add(Userods.GetName(jobCur.UserNumExpert)); row.Cells.Add(Userods.GetName(jobCur.UserNumEngineer)); row.Cells.Add(jobCur.HoursEstimate.ToString()); row.Cells.Add(jobCur.HoursActual.ToString()); row.Cells.Add(isJobMatch ? "X" : ""); row.Cells.Add(isBugMatch ? "X" : ""); row.Cells.Add(new GridCell(isFeatureReqMatch ? "X" : "") { ColorBackG = _listFeatureRequestsAll.Count == 0 ? Control.DefaultBackColor : Color.Empty }); row.Tag = jobCur; gridMain.ListGridRows.Add(row); } gridMain.EndUpdate(); actionCloseProgress(); }
///<summary>Loads the given emailMessage into the control. ///Set listEmailMessages to messages to be considered for the auto complete contacts pop up. When null will query.</summary> public void LoadEmailMessage(EmailMessage emailMessage, List <EmailMessage> listHistoricEmailMessages = null) { Cursor = Cursors.WaitCursor; _emailMessage = emailMessage; _patCur = Patients.GetPat(_emailMessage.PatNum); //we could just as easily pass this in. if (_emailMessage.SentOrReceived == EmailSentOrReceived.Neither) //Composing a message { _isComposing = true; if (_isSigningEnabled) { SetSig(EmailMessages.GetCertFromPrivateStore(_emailMessage.FromAddress)); } _emailMessage.UserNum = Security.CurUser.UserNum; //UserNum is also updated when sent. Setting here to display when composing. } else //sent or received (not composing) //For all email received or sent types, we disable most of the controls and put the window into a mostly read-only state. //There is no reason a user should ever edit a received message. //The user can copy the content and send a new email if needed (to mimic forwarding until we add the forwarding feature). { _isComposing = false; textMsgDateTime.Text = _emailMessage.MsgDateTime.ToString(); textMsgDateTime.ForeColor = Color.Black; gridAttachments.SetAddButtonEnabled(false); textFromAddress.ReadOnly = true; textToAddress.ReadOnly = true; textCcAddress.ReadOnly = true; textBccAddress.ReadOnly = true; textSubject.ReadOnly = true; textSubject.SpellCheckIsEnabled = false; //Prevents slowness resizing the window, because spell checker runs each time resize event is fired. textBodyText.ReadOnly = true; textBodyText.SpellCheckIsEnabled = false; //Prevents slowness resizing the window, because spell checker runs each time resize event is fired. comboEmailFrom.Visible = false; textFromAddress.Width = textCcAddress.Width; //Match the size of Cc Address. textFromAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); //Change the anchors to accommodate. } textSentOrReceived.Text = _emailMessage.SentOrReceived.ToString(); textFromAddress.Text = _emailMessage.FromAddress; textToAddress.Text = _emailMessage.ToAddress; textCcAddress.Text = _emailMessage.CcAddress; textBccAddress.Text = _emailMessage.BccAddress; //if you send an email to yourself, you'll be able to see everyone in the bcc field. textSubject.Text = _emailMessage.Subject; textBodyText.Visible = true; webBrowser.Visible = false; if (EmailMessages.IsReceived(_emailMessage.SentOrReceived)) { List <List <Health.Direct.Common.Mime.MimeEntity> > listMimeParts = EmailMessages.GetMimePartsForMimeTypes(_emailMessage.RawEmailIn, EmailAddressPreview, "text/html", "text/plain", "image/"); List <Health.Direct.Common.Mime.MimeEntity> listHtmlParts = listMimeParts[0]; //If RawEmailIn is blank, then this list will also be blank (ex Secure Web Mail messages). List <Health.Direct.Common.Mime.MimeEntity> listTextParts = listMimeParts[1]; //If RawEmailIn is blank, then this list will also be blank (ex Secure Web Mail messages). _listImageParts = listMimeParts[2]; //If RawEmailIn is blank, then this list will also be blank (ex Secure Web Mail messages). if (listHtmlParts.Count > 0) //Html body found. { textBodyText.Visible = false; _isLoading = true; try { webBrowser.DocumentText = EmailMessages.ProcessMimeTextPart(listHtmlParts[0]); } catch (ApplicationException ex) { webBrowser.DocumentText = "Improperly formatted email. Error displaying email: " + ex.Message; } webBrowser.Location = textBodyText.Location; webBrowser.Size = textBodyText.Size; webBrowser.Anchor = textBodyText.Anchor; webBrowser.Visible = true; if (_listImageParts.Count > 0) { butShowImages.Visible = true; } } else if (listTextParts.Count > 0) //No html body found, however one specific mime part is for viewing in text only. { textBodyText.Text = EmailMessages.ProcessMimeTextPart(listTextParts[0]); } else //No html body found and no text body found. Last resort. Show all mime parts which are not attachments (ugly). { textBodyText.Text = _emailMessage.BodyText; //This version of the body text includes all non-attachment mime parts. } lableUserName.Visible = false; textUserName.Visible = false; } else //Sent or Unsent/Saved. { textBodyText.Text = _emailMessage.BodyText; //Show the body text exactly as typed by the user. lableUserName.Visible = true; textUserName.Visible = true; textUserName.Text = (Userods.GetName(_emailMessage.UserNum)); //Blank if 0. } FillAttachments(); if (IsComposing) { FillComboEmail(); SetHistoricContacts(listHistoricEmailMessages); } textBodyText.Select(); Cursor = Cursors.Default; if (_isPreview) { tabAttachmentsShowEmail.TabPages.Remove(tabShowEmail); //Do not show Hide Email tab when in Email Preview mode } else { InitEmailShowInListBox(); RefreshShowIn(); } }
private void FormCommItem_Load(object sender, EventArgs e) { _isStartingUp = true; _listCommlogTypeDefs = Defs.GetDefsForCategory(DefCat.CommLogTypes, true); if (!PrefC.IsODHQ) { _listCommlogTypeDefs.RemoveAll(x => x.ItemValue == CommItemTypeAuto.ODHQ.ToString()); } //there will usually be a commtype set before this dialog is opened for (int i = 0; i < _listCommlogTypeDefs.Count; i++) { listType.Items.Add(_listCommlogTypeDefs[i].ItemName); if (_listCommlogTypeDefs[i].DefNum == _commlogCur.CommType) { listType.SelectedIndex = i; } } for (int i = 0; i < Enum.GetNames(typeof(CommItemMode)).Length; i++) { listMode.Items.Add(Lan.g("enumCommItemMode", Enum.GetNames(typeof(CommItemMode))[i])); } for (int i = 0; i < Enum.GetNames(typeof(CommSentOrReceived)).Length; i++) { listSentOrReceived.Items.Add(Lan.g("enumCommSentOrReceived", Enum.GetNames(typeof(CommSentOrReceived))[i])); } if (!PrefC.IsODHQ) { labelDateTimeEnd.Visible = false; textDateTimeEnd.Visible = false; butNow.Visible = false; butNowEnd.Visible = false; } if (!Security.IsAuthorized(Permissions.CommlogEdit, _commlogCur.CommDateTime)) { //The user does not have permissions to create or edit commlogs. if (_commlogOld.IsNew || _isPersistent) { DialogResult = DialogResult.Cancel; Close(); return; } butDelete.Enabled = false; butOK.Enabled = false; butEditAutoNote.Enabled = false; } textNote.Select(); string keyData = GetSignatureKey(); signatureBoxWrapper.FillSignature(_commlogCur.SigIsTopaz, keyData, _commlogCur.Signature); signatureBoxWrapper.BringToFront(); if (_isPersistent) { RefreshUserOdPrefs(); labelCommlogNum.Visible = false; textCommlogNum.Visible = false; butUserPrefs.Visible = true; butOK.Text = Lan.g(this, "Create"); butCancel.Text = Lan.g(this, "Close"); butDelete.Visible = false; } if (_commlogOld.IsNew && PrefC.GetBool(PrefName.CommLogAutoSave)) { timerAutoSave.Start(); } textPatientName.Text = Patients.GetLim(_commlogCur.PatNum).GetNameFL(); textUser.Text = Userods.GetName(_commlogCur.UserNum); //might be blank. textDateTime.Text = _commlogCur.CommDateTime.ToShortDateString() + " " + _commlogCur.CommDateTime.ToShortTimeString(); if (_commlogCur.DateTimeEnd.Year > 1880) { textDateTimeEnd.Text = _commlogCur.DateTimeEnd.ToShortDateString() + " " + _commlogCur.DateTimeEnd.ToShortTimeString(); } listMode.SelectedIndex = (int)_commlogCur.Mode_; listSentOrReceived.SelectedIndex = (int)_commlogCur.SentOrReceived; textNote.Text = _commlogCur.Note; textNote.SelectionStart = textNote.Text.Length; butEditAutoNote.Visible = GetHasAutoNotePrompt(); if (!ODBuild.IsDebug()) { labelCommlogNum.Visible = false; textCommlogNum.Visible = false; } textCommlogNum.Text = _commlogCur.CommlogNum.ToString(); if (_isPersistent) { PatientChangedEvent.Fired += PatientChangedEvent_Fired; } CommItemSaveEvent.Fired += CommItemSaveEvent_Fired; _isStartingUp = false; }
private void FillGridOrders() { long supplierNum = 0; if (!comboSupplier.IsAllSelected) { supplierNum = comboSupplier.GetSelectedKey <Supplier>(x => x.SupplierNum); } _listSupplyOrders = SupplyOrders.GetList(supplierNum); if (!checkShowReceived.Checked) { _listSupplyOrders = _listSupplyOrders.FindAll(x => x.DateReceived.Year < 1880); } //Show the not received items at the bottom, then order by date placed. _listSupplyOrders = _listSupplyOrders.OrderBy(x => x.DateReceived.Year < 1880) .ThenBy(x => x.DatePlaced).ToList(); gridOrders.BeginUpdate(); gridOrders.ListGridColumns.Clear(); GridColumn col = new GridColumn(Lan.g(this, "Date Placed"), 80); gridOrders.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Date Received"), 90); gridOrders.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Amount"), 70, HorizontalAlignment.Right); gridOrders.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Shipping"), 70, HorizontalAlignment.Right); gridOrders.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Supplier"), 120); gridOrders.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Note"), 200); gridOrders.ListGridColumns.Add(col); col = new GridColumn(Lan.g(this, "Placed By"), 100); gridOrders.ListGridColumns.Add(col); gridOrders.ListGridRows.Clear(); GridRow row; for (int i = 0; i < _listSupplyOrders.Count; i++) { row = new GridRow(); bool isPending = false; if (_listSupplyOrders[i].DatePlaced.Year > 2200) { isPending = true; } if (isPending) { row.Cells.Add(Lan.g(this, "pending")); } else { row.Cells.Add(_listSupplyOrders[i].DatePlaced.ToShortDateString()); } if (_listSupplyOrders[i].DateReceived.Year < 1880) { row.Cells.Add(""); } else { row.Cells.Add(_listSupplyOrders[i].DateReceived.ToShortDateString()); } row.Cells.Add(_listSupplyOrders[i].AmountTotal.ToString("c")); row.Cells.Add(_listSupplyOrders[i].ShippingCharge.ToString("c")); row.Cells.Add(Suppliers.GetName(_listSuppliers, _listSupplyOrders[i].SupplierNum)); row.Cells.Add(_listSupplyOrders[i].Note); if (isPending || _listSupplyOrders[i].UserNum == 0) { row.Cells.Add(""); } else { row.Cells.Add(Userods.GetName(_listSupplyOrders[i].UserNum)); } row.Tag = _listSupplyOrders[i]; gridOrders.ListGridRows.Add(row); } gridOrders.EndUpdate(); }
///<summary>Fills with jobs that are attached to the selected sprint and are not complete. Ordered by owner and then category.</summary> private void FillGridQueue() { gridSprintQueue.BeginUpdate(); gridSprintQueue.ListGridColumns.Clear(); gridSprintQueue.ListGridColumns.Add(new GridColumn("Priority",90,HorizontalAlignment.Center)); gridSprintQueue.ListGridColumns.Add(new GridColumn("Owner",55,HorizontalAlignment.Center)); gridSprintQueue.ListGridColumns.Add(new GridColumn("Owner Action",110)); gridSprintQueue.ListGridColumns.Add(new GridColumn("EstHrs",60,HorizontalAlignment.Center,GridSortingStrategy.AmountParse)); gridSprintQueue.ListGridColumns.Add(new GridColumn("ActHrs",60,HorizontalAlignment.Center,GridSortingStrategy.AmountParse)); gridSprintQueue.ListGridColumns.Add(new GridColumn("",300)); gridSprintQueue.ListGridRows.Clear(); List<Job> listQueue=_listAttachedJobs.Where(x => x.PhaseCur.In(JobPhase.Concept,JobPhase.Definition,JobPhase.Quote)).ToList(); listQueue=listQueue.OrderBy(x => x.OwnerNum!=0) //This is the reverse order of the actual priority of different categories of jobs //Purposefully put in this order so they appear correctly in the list. .ThenBy(x => x.Category==JobCategory.NeedNoApproval) .ThenBy(x => x.Category==JobCategory.Research) .ThenBy(x => x.Category==JobCategory.Conversion) .ThenBy(x => x.Category==JobCategory.HqRequest) .ThenBy(x => x.Category==JobCategory.InternalRequest) .ThenBy(x => x.Category==JobCategory.Feature) .ThenBy(x => x.Category==JobCategory.Query) .ThenBy(x => x.Category==JobCategory.ProgramBridge) .ThenBy(x => x.Category==JobCategory.Enhancement) .ThenBy(x => x.Category==JobCategory.Bug) .ThenBy(x => _listJobPriorities.FirstOrDefault(y => y.DefNum==x.Priority).ItemOrder).ToList(); Dictionary<JobPhase,List<Job>> dictPhases=new Dictionary<JobPhase,List<Job>>(); foreach(Job job in listQueue) { JobPhase phase=job.PhaseCur; if(!dictPhases.ContainsKey(phase)) { dictPhases[phase]=new List<Job>(); } dictPhases[phase].Add(job); } //sort dictionary so actions will appear in same order //This is in reverse order in the code so it is correct in the UI dictPhases=dictPhases.OrderBy(x => x.Key==JobPhase.Concept) .ThenBy(x => x.Key==JobPhase.Quote) .ThenBy(x => x.Key==JobPhase.Definition).ToDictionary(x => x.Key,x => x.Value); foreach(KeyValuePair<JobPhase,List<Job>> kvp in dictPhases) { if(listQueue.Count==0) { continue; } gridSprintQueue.ListGridRows.Add(new GridRow("","","","","",kvp.Key.ToString()) { ColorBackG=Color.FromArgb(223,234,245),Bold=true }); foreach(Job job in kvp.Value) { Color backColor=Color.White; Def jobPriority=_listJobPriorities.FirstOrDefault(y => y.DefNum==job.Priority); gridSprintQueue.ListGridRows.Add( new GridRow( new GridCell(jobPriority.ItemName) { ColorBackG=jobPriority.ItemColor, ColorText=(job.Priority==_listJobPriorities.FirstOrDefault(y => y.ItemValue.Contains("Urgent")).DefNum) ? Color.White : Color.Black, }, new GridCell(job.OwnerNum==0 ? "-" : Userods.GetName(job.OwnerNum)), new GridCell(job.OwnerAction.GetDescription()), new GridCell(job.HoursEstimate.ToString()), new GridCell(job.HoursActual.ToString()), new GridCell(job.ToString()) ) { Tag=job, ColorBackG=backColor } ); } } gridSprintQueue.EndUpdate(); }
private void FormCommItem_Load(object sender, System.EventArgs e) { IsStartingUp = true; textPatientName.Text = Patients.GetLim(CommlogCur.PatNum).GetNameFL(); textUser.Text = Userods.GetName(CommlogCur.UserNum); //might be blank. textDateTime.Text = CommlogCur.CommDateTime.ToShortDateString() + " " + CommlogCur.CommDateTime.ToShortTimeString(); if (CommlogCur.DateTimeEnd.Year > 1880) { textDateTimeEnd.Text = CommlogCur.DateTimeEnd.ToShortDateString() + " " + CommlogCur.DateTimeEnd.ToShortTimeString(); } //there will usually be a commtype set before this dialog is opened for (int i = 0; i < DefC.Short[(int)DefCat.CommLogTypes].Length; i++) { listType.Items.Add(DefC.Short[(int)DefCat.CommLogTypes][i].ItemName); if (DefC.Short[(int)DefCat.CommLogTypes][i].DefNum == CommlogCur.CommType) { listType.SelectedIndex = i; } } for (int i = 0; i < Enum.GetNames(typeof(CommItemMode)).Length; i++) { listMode.Items.Add(Lan.g("enumCommItemMode", Enum.GetNames(typeof(CommItemMode))[i])); } listMode.SelectedIndex = (int)CommlogCur.Mode_; for (int i = 0; i < Enum.GetNames(typeof(CommSentOrReceived)).Length; i++) { listSentOrReceived.Items.Add (Lan.g("enumCommSentOrReceived", Enum.GetNames(typeof(CommSentOrReceived))[i])); } try{ listSentOrReceived.SelectedIndex = (int)CommlogCur.SentOrReceived; } catch { MessageBox.Show(((int)CommlogCur.SentOrReceived).ToString()); } //checkIsStatementSent.Checked=CommlogCur.IsStatementSent; textNote.Text = CommlogCur.Note; textNote.SelectionStart = textNote.Text.Length; #if !DEBUG labelCommlogNum.Visible = false; textCommlogNum.Visible = false; #endif textCommlogNum.Text = CommlogCur.CommlogNum.ToString(); if (!PrefC.GetBool(PrefName.DistributorKey)) { labelDateTimeEnd.Visible = false; textDateTimeEnd.Visible = false; butNow.Visible = false; butNowEnd.Visible = false; } textNote.Select(); string keyData = GetSignatureKey(); signatureBoxWrapper.FillSignature(CommlogCur.SigIsTopaz, keyData, CommlogCur.Signature); signatureBoxWrapper.BringToFront(); IsStartingUp = false; if (!Security.IsAuthorized(Permissions.CommlogEdit, CommlogCur.CommDateTime)) { if (IsNew) { DialogResult = DialogResult.Cancel; return; } butDelete.Enabled = false; butOK.Enabled = false; } }
private void FillGridJobs(List <Job> listJobs) { int totalJobs = listJobs.Count(); int totalBugs = 0; int totalFeatures = 0; double totalHrsEst = 0; double totalHrsSpent = 0; double totalQuotedDollars = 0; List <Def> listJobPriorities = Defs.GetDefsForCategory(DefCat.JobPriorities); List <string> listProposedVersions = Enum.GetNames(typeof(JobProposedVersion)).ToList(); gridJobs.BeginUpdate(); gridJobs.ListGridColumns.Clear(); gridJobs.ListGridColumns.Add(new GridColumn("Job", 0)); gridJobs.ListGridColumns.Add(new GridColumn("Owner", 70) { TextAlign = HorizontalAlignment.Center }); gridJobs.ListGridColumns.Add(new GridColumn("Owner Action", 90)); gridJobs.ListGridColumns.Add(new GridColumn("Phase", 75) { TextAlign = HorizontalAlignment.Center }); gridJobs.ListGridColumns.Add(new GridColumn("Priority", 75) { TextAlign = HorizontalAlignment.Center }); gridJobs.ListGridColumns.Add(new GridColumn("Expert", 75) { TextAlign = HorizontalAlignment.Center }); gridJobs.ListGridColumns.Add(new GridColumn("Engineer", 75) { TextAlign = HorizontalAlignment.Center }); //Est. Version has a combobox, but it currently does not work. //TODO: Centralize a save method so job saving can be called from anywhere and perform the same functionality gridJobs.ListGridColumns.Add(new GridColumn("Est. Version", 90) { ListDisplayStrings = listProposedVersions, TextAlign = HorizontalAlignment.Center }); gridJobs.ListGridColumns.Add(new GridColumn("Hrs Est", 90) { TextAlign = HorizontalAlignment.Center, SortingStrategy = GridSortingStrategy.AmountParse }); gridJobs.ListGridColumns.Add(new GridColumn("Hrs Last 7 Days", 90) { TextAlign = HorizontalAlignment.Center, SortingStrategy = GridSortingStrategy.AmountParse }); gridJobs.ListGridColumns.Add(new GridColumn("Hrs Total", 90) { TextAlign = HorizontalAlignment.Center, SortingStrategy = GridSortingStrategy.AmountParse }); gridJobs.ListGridColumns.Add(new GridColumn("Est Completion %", 110) { TextAlign = HorizontalAlignment.Center, SortingStrategy = GridSortingStrategy.AmountParse }); gridJobs.ListGridColumns.Add(new GridColumn("Last Updated", 90) { TextAlign = HorizontalAlignment.Center, SortingStrategy = GridSortingStrategy.DateParse }); gridJobs.ListGridRows.Clear(); foreach (Job job in listJobs) { Def jobPriority = listJobPriorities.FirstOrDefault(y => y.DefNum == job.Priority); totalBugs += job.ListJobLinks.Count(x => x.LinkType == JobLinkType.Bug); totalFeatures += job.ListJobLinks.Count(x => x.LinkType == JobLinkType.Request); totalHrsEst += job.HoursEstimate; totalHrsSpent += job.HoursActual; foreach (JobQuote quote in job.ListJobQuotes) { totalQuotedDollars += PIn.Double(quote.Amount); } GridRow row = new GridRow() { Tag = job }; row.Cells.Add(job.ToString()); row.Cells.Add(Userods.GetName(job.OwnerNum)); row.Cells.Add(job.OwnerAction.GetDescription()); row.Cells.Add(job.PhaseCur.ToString()); GridCell cell = new GridCell(jobPriority.ItemName); cell.ColorBackG = jobPriority.ItemColor; cell.ColorText = (job.Priority == listJobPriorities.FirstOrDefault(y => y.ItemValue.Contains("Urgent")).DefNum) ? Color.White : Color.Black; row.Cells.Add(cell); row.Cells.Add(Userods.GetName(job.UserNumExpert)); row.Cells.Add(Userods.GetName(job.UserNumEngineer)); cell = new GridCell(job.ProposedVersion.ToString()); cell.ComboSelectedIndex = listProposedVersions.IndexOf(job.ProposedVersion.ToString()); row.Cells.Add(cell); row.Cells.Add(job.HoursEstimate.ToString()); row.Cells.Add(job.ListJobTimeLogs.Where(x => x.DateTStamp >= DateTime.Today.AddDays(-7)).Sum(y => y.TimeReview.TotalHours).ToString()); row.Cells.Add(job.HoursActual.ToString()); row.Cells.Add(Math.Round((job.HoursActual / job.HoursEstimate * 100), 0).ToString()); DateTime lastUpdated = job.ListJobLogs.Where(x => x.Description != "Job Viewed").Select(y => y.DateTimeEntry).OrderByDescending(x => x.Ticks).FirstOrDefault(); row.Cells.Add(lastUpdated == DateTime.MinValue?"N/A":lastUpdated.ToShortDateString()); gridJobs.ListGridRows.Add(row); } gridJobs.EndUpdate(); textTotalJobs.Text = totalJobs.ToString(); textTotalHrsEst.Text = totalHrsEst.ToString(); textTotalHrsSpent.Text = totalHrsSpent.ToString(); textTotalQuote.Text = totalQuotedDollars.ToString(); textTotalBugs.Text = totalBugs.ToString(); textTotalFeatures.Text = totalFeatures.ToString(); textCompletionPercent.Text = Math.Round(totalHrsSpent / totalHrsEst * 100, 0).ToString(); }
internal string GetUserodName(long userNum) { return(Userods.GetName(userNum)); //might be blank. }
private void FormSupplyOrderEdit_Load(object sender, EventArgs e) { textSupplier.Text = Suppliers.GetName(ListSuppliersAll, SupplyOrderCur.SupplierNum); if (SupplyOrderCur.DatePlaced.Year > 2200) { textDatePlaced.Text = DateTime.Today.ToShortDateString(); SupplyOrderCur.UserNum = Security.CurUser.UserNum; } else { textDatePlaced.Text = SupplyOrderCur.DatePlaced.ToShortDateString(); } textAmountTotal.Text = SupplyOrderCur.AmountTotal.ToString("n"); textShippingCharge.Text = SupplyOrderCur.ShippingCharge.ToString("n"); if (SupplyOrderCur.DateReceived.Year > 1880) { textDateReceived.Text = SupplyOrderCur.DateReceived.ToShortDateString(); } textNote.Text = SupplyOrderCur.Note; comboUser.Items.AddNone <Userod>(); comboUser.Items.AddList(Userods.GetUsers().FindAll(x => !x.IsHidden), x => x.UserName); //the abbr parameter is usually skipped. <T> is inferred. comboUser.SetSelectedKey <Userod>(SupplyOrderCur.UserNum, x => x.UserNum, x => Userods.GetName(x)); }
private void FillGridMain() { if (!_IsSearchReady) { return; } Cursor = Cursors.WaitCursor; gridMain.BeginUpdate(); gridMain.Columns.Clear(); //TODO: change columns gridMain.Columns.Add(new ODGridColumn("Job\r\nNum", 50)); gridMain.Columns.Add(new ODGridColumn("Phase", 85)); gridMain.Columns.Add(new ODGridColumn("Category", 80)); gridMain.Columns.Add(new ODGridColumn("Job Title", 300)); gridMain.Columns.Add(new ODGridColumn("Version", 80)); gridMain.Columns.Add(new ODGridColumn("Expert", 75)); gridMain.Columns.Add(new ODGridColumn("Engineer", 75)); gridMain.Columns.Add(new ODGridColumn("Job\r\nMatch", 45) { TextAlign = HorizontalAlignment.Center }); gridMain.Columns.Add(new ODGridColumn("Bug\r\nMatch", 45) { TextAlign = HorizontalAlignment.Center }); gridMain.Columns.Add(new ODGridColumn("Feature\r\nRequest\r\nMatch", 45) { TextAlign = HorizontalAlignment.Center }); gridMain.Rows.Clear(); string[] searchTokens = textSearch.Text.ToLower().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); _listJobsFiltered = new List <Job>(); long[] userNums = new long[0]; JobCategory[] jobCats = new JobCategory[0]; JobPhase[] jobPhases = new JobPhase[0]; if (listBoxUsers.SelectedIndices.Count > 0 && !listBoxUsers.SelectedIndices.Contains(0)) { userNums = listBoxUsers.SelectedIndices.Cast <int>().Select(x => _listUsers[x - 1].UserNum).ToArray(); } if (listBoxCategory.SelectedIndices.Count > 0 && !listBoxCategory.SelectedIndices.Contains(0)) { jobCats = listBoxCategory.SelectedIndices.Cast <int>().Select(x => (JobCategory)(x - 1)).ToArray(); } if (listBoxStatus.SelectedIndices.Count > 0 && !listBoxStatus.SelectedIndices.Contains(0)) { jobPhases = listBoxStatus.SelectedIndices.Cast <int>().Select(x => (JobPhase)(x - 1)).ToArray(); } foreach (Job jobCur in _listJobsAll) { if (jobCats.Length > 0 && !jobCats.Contains(jobCur.Category)) { continue; } if (jobPhases.Length > 0 && !jobPhases.Contains(jobCur.PhaseCur)) { continue; } if (userNums.Length > 0 && !userNums.All(x => Jobs.GetUserNums(jobCur).Contains(x))) { continue; } bool isJobMatch = false; bool isBugMatch = false; bool isFeatureReqMatch = false; if (searchTokens.Length > 0) { bool addRow = false; List <Bug> listBugs = jobCur.ListJobLinks.FindAll(x => x.LinkType == JobLinkType.Bug).Select(x => _listBugsAll.FirstOrDefault(y => x.FKey == y.BugId)).Where(x => x != null).ToList(); List <FeatureRequest> listFeatures = jobCur.ListJobLinks.FindAll(x => x.LinkType == JobLinkType.Request).Select(x => _listFeatureRequestsAll.FirstOrDefault(y => x.FKey == y.FeatReqNum)).Where(x => x != null).ToList(); foreach (string token in searchTokens.Distinct()) { bool isFound = false; //JOB MATCHES if (jobCur.Title.ToLower().Contains(token) || jobCur.Implementation.ToLower().Contains(token) || jobCur.Requirements.ToLower().Contains(token) || jobCur.Documentation.ToLower().Contains(token) || jobCur.JobNum.ToString().Contains(token)) { isFound = true; isJobMatch = true; } //BUG MATCHES if (!isFound || !isBugMatch) { if (listBugs.Any(x => x.Description.ToLower().Contains(token) || x.Discussion.ToLower().Contains(token))) { isFound = true; isBugMatch = true; } } //FEATURE REQUEST MATCHES if (!isFound || !isFeatureReqMatch) { if (listFeatures.Any(x => x.Description.Contains(token) || x.FeatReqNum.ToString().ToLower().Contains(token))) { isFound = true; isFeatureReqMatch = true; } } addRow = isFound; if (!isFound) { break; //stop looking for additional tokens, we didn't find this one. } } if (!addRow) { continue; //we did not find one of the search terms. } } _listJobsFiltered.Add(jobCur); ODGridRow row = new ODGridRow(); row.Cells.Add(jobCur.JobNum.ToString()); row.Cells.Add(jobCur.PhaseCur.ToString()); row.Cells.Add(jobCur.Category.ToString()); row.Cells.Add(jobCur.Title.Left(53, true)); row.Cells.Add(jobCur.JobVersion.ToString()); row.Cells.Add(Userods.GetName(jobCur.UserNumExpert)); row.Cells.Add(Userods.GetName(jobCur.UserNumEngineer)); row.Cells.Add(isJobMatch ? "X" : ""); row.Cells.Add(isBugMatch ? "X" : ""); row.Cells.Add(new ODGridCell(isFeatureReqMatch ? "X" : "") { CellColor = _listFeatureRequestsAll.Count == 0 ? Control.DefaultBackColor : Color.Empty }); row.Tag = jobCur; gridMain.Rows.Add(row); } gridMain.EndUpdate(); Cursor = Cursors.Default; }
private void FillGrid() { if (textDateFrom.errorProvider1.GetError(textDateFrom) != "" || textDateTo.errorProvider1.GetError(textDateTo) != "") { return; } DateTime dateFrom = PIn.Date(textDateFrom.Text); DateTime dateTo = textDateTo.Text != ""?PIn.Date(textDateTo.Text):DateTime.MaxValue; double filterAmt = string.IsNullOrEmpty(textAmt.errorProvider1.GetError(textAmt))?PIn.Double(textAmt.Text):0; List <JournalEntry> listJEntries = JournalEntries.GetForAccount(_acctCur.AccountNum); List <Transaction> listTransactions = Transactions.GetManyTrans(listJEntries.Select(x => x.TransactionNum).ToList()); //Resize grid to fit, important for later resizing gridMain.BeginUpdate(); gridMain.Columns.Clear(); gridMain.Rows.Clear(); gridMain.Width = isPrinting?1050:(this.Width - 16);//gridMain.Location.XPos=0 and the grid is form width - 16 gridMain.HideScrollBars = isPrinting; gridMain.EndUpdate(); gridMain.BeginUpdate(); gridMain.Title = _acctCur.Description + " (" + Lan.g("enumAccountType", _acctCur.AcctType.ToString()) + ")"; gridMain.Columns.Clear(); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Chk #"), 60, HorizontalAlignment.Center)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Date"), 75)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Memo"), isPrinting?200:220)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Splits"), isPrinting?200:220)); int colClearWidth = 40; //because the "clear" column has not been added yet. int colUserWidth = 100; //because the user columns haven't been added yet. //if printing, total size=paper width-margins (1050), otherwise total size=gridWidth-scroll bar width of 19 //divide remaining size, total size - grid col widths, into thirds for the debit, credit, and balance columns int colW = (gridMain.Width - (isPrinting?0:19) - gridMain.WidthAllColumns - colClearWidth - 2 * colUserWidth) / 3; gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Debit" + (Accounts.DebitIsPos(_acctCur.AcctType)?"(+)":"(-)")), colW, HorizontalAlignment.Right)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Credit" + (Accounts.DebitIsPos(_acctCur.AcctType)?"(-)":"(+)")), colW, HorizontalAlignment.Right)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Balance"), colW, HorizontalAlignment.Right)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Created By"), colUserWidth)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Last Edited By"), colUserWidth)); gridMain.Columns.Add(new ODGridColumn(Lan.g("TableJournal", "Clear"), colClearWidth, HorizontalAlignment.Center)); gridMain.Rows.Clear(); ODGridRow row; decimal bal = 0; foreach (JournalEntry jeCur in listJEntries) { if (jeCur.DateDisplayed > dateTo) { break; } if (new[] { AccountType.Income, AccountType.Expense }.Contains(_acctCur.AcctType) && jeCur.DateDisplayed < dateFrom) { continue; //for income and expense accounts, previous balances are not included. Only the current timespan. } //DebitIsPos=true for checking acct, bal+=DebitAmt-CreditAmt bal += (Accounts.DebitIsPos(_acctCur.AcctType)?1:-1) * ((decimal)jeCur.DebitAmt - (decimal)jeCur.CreditAmt); if (new[] { AccountType.Asset, AccountType.Liability, AccountType.Equity }.Contains(_acctCur.AcctType) && jeCur.DateDisplayed < dateFrom) { continue; //for asset, liability, and equity accounts, older entries do affect the current balance. } if (filterAmt != 0 && filterAmt != jeCur.CreditAmt && filterAmt != jeCur.DebitAmt) { continue; } if (textFindText.Text != "" && new[] { jeCur.Memo, jeCur.CheckNumber, jeCur.Splits }.All(x => !x.ToUpper().Contains(textFindText.Text.ToUpper()))) { continue; } row = new ODGridRow(); row.Cells.Add(jeCur.CheckNumber); row.Cells.Add(jeCur.DateDisplayed.ToShortDateString()); row.Cells.Add(jeCur.Memo); row.Cells.Add(jeCur.Splits); row.Cells.Add(jeCur.DebitAmt == 0?"":jeCur.DebitAmt.ToString("n")); row.Cells.Add(jeCur.CreditAmt == 0?"":jeCur.CreditAmt.ToString("n")); row.Cells.Add(bal.ToString("n")); row.Cells.Add(Userods.GetName(listTransactions.FirstOrDefault(x => x.TransactionNum == jeCur.TransactionNum)?.UserNum ?? 0)); row.Cells.Add(Userods.GetName(jeCur.SecUserNumEdit)); row.Cells.Add(jeCur.ReconcileNum == 0?"":"X"); row.Tag = jeCur.Copy(); gridMain.Rows.Add(row); } gridMain.EndUpdate(); gridMain.ScrollToEnd(); }
private void signatureBoxWrapper_SignatureChanged(object sender, EventArgs e) { CommlogCur.UserNum = Security.CurUser.UserNum; textUser.Text = Userods.GetName(CommlogCur.UserNum); SigChanged = true; }
private void FormTreatPlanEdit_Load(object sender, System.EventArgs e) { //this window never comes up for new TP. Always saved ahead of time. if (!Security.IsAuthorized(Permissions.TreatPlanEdit, PlanCur.DateTP)) { butOK.Enabled = false; butDelete.Enabled = false; butPickResponsParty.Enabled = false; butClearResponsParty.Enabled = false; butSigClear.Enabled = false; butDocumentDetach.Enabled = false; textHeading.ReadOnly = true; textDateTP.ReadOnly = true; textNote.ReadOnly = true; if (Security.IsAuthorized(Permissions.TreatPlanSign, PlanCur.DateTP)) //User has permission to edit the heading field. { textHeading.ReadOnly = false; butOK.Enabled = true; } } if (!Security.IsAuthorized(Permissions.TreatPlanPresenterEdit, true)) { butPickPresenter.Visible = false; } if (PlanCur.UserNumPresenter > 0) { _presenterCur = Userods.GetUser(PlanCur.UserNumPresenter); _presenterOld = _presenterCur.Copy(); textPresenter.Text = _presenterCur.UserName; } textUserEntry.Text = Userods.GetName(PlanCur.SecUserNumEntry); textDateTP.Text = PlanCur.DateTP.ToShortDateString(); textHeading.Text = PlanCur.Heading; textNote.Text = PlanCur.Note; if (PrefC.GetBool(PrefName.EasyHidePublicHealth)) { labelResponsParty.Visible = false; textResponsParty.Visible = false; butPickResponsParty.Visible = false; butClearResponsParty.Visible = false; } if (PlanCur.ResponsParty != 0) { textResponsParty.Text = Patients.GetLim(PlanCur.ResponsParty).GetNameLF(); } if (PlanCur.Signature != "") //Per Nathan 01 OCT 2015: In addition to invalidating signature (old behavior) we will also block editing signed TPs. { butOK.Enabled = false; textHeading.ReadOnly = true; textDateTP.ReadOnly = true; textNote.ReadOnly = true; butClearResponsParty.Enabled = false; butPickResponsParty.Enabled = false; butSigClear.Visible = true; butDocumentDetach.Enabled = false; } else { butSigClear.Visible = false; butSigClear.Enabled = false; } if (PlanCur.DocNum > 0) //Was set at some point in the past. { Document doc = Documents.GetByNum(PlanCur.DocNum); if (doc.DocNum == 0) { textDocument.Text = "(" + Lan.g(this, "Missing Document") + ")"; //Invalid Fkey to document.DocNum butDocumentView.Enabled = false; } else { textDocument.Text = doc.Description; if (!Documents.DocExists(doc.DocNum)) { textDocument.Text += " (" + Lan.g(this, "Unreachable File") + ")"; //Document points to unreachable file butDocumentView.Enabled = false; } } } else //hide document controls because there is no attached document { labelDocument.Visible = false; textDocument.Visible = false; butDocumentView.Visible = false; butDocumentDetach.Visible = false; } }