private void DoSearchCase(string caseNumber) { _isBusySearching = true; try { caseNumber = caseNumber.TrimStart('0'); var foundCases = CaseControls.Where(o => o.CaseModel.CaseNumber.TrimStart('0').StartsWith(caseNumber.TrimStart('0'))); DimmCasesInverted(foundCases); if (!string.IsNullOrEmpty(caseNumber) && foundCases.Count() == 0) { IsAbleToOpenNotFoundCase = true; } else { IsAbleToOpenNotFoundCase = false; } } catch (Exception) { throw; } finally { _isBusySearching = false; } }
private void Sort(bool descending) { LoggerController.Log("Case Type: " + CaseType.SF.ToString() + " Sort By: " + SortBy.ToString() + ((descending) ? " Descending" : " Ascending")); CaseControls.ToList().ForEach(o => o.CloseDetails()); _isBusySortCases = true; IOrderedEnumerable <IGrouping <object, CaseControlVM> > sorted = default(IOrderedEnumerable <IGrouping <object, CaseControlVM> >); if (descending) { sorted = CaseControls.OrderByDescending(Order(SortBy)).GroupBy(Group(GroupBy)).OrderBy(g => g.Key); } else { sorted = CaseControls.OrderBy(Order(SortBy)).GroupBy(Group(GroupBy)).OrderBy(g => g.Key); } UpdatedOrderedCases(sorted); _isBusySortCases = false; }
internal async Task DoSearchCasesText(string text) { if (string.IsNullOrEmpty(text)) { UnDimmAllCases(); foreach (var item in CaseControls) { item.RevertSearchedTextToOriginal(); } return; } var found = CaseControls.Where(o => (o.CaseModel.Subject != null && o.CaseModel.Subject.Contains(text)) || (o.CaseModel.Description != null && o.CaseModel.Description.Contains(text))); DimmCasesInverted(found); foreach (var item in found) { item.HighlightCaseText(text); } }
internal async Task BuildCasesFromArray(string[] cases) { IList <ICase> casesData; try { _isBusyBuildCases = true; casesData = await Task.Run(() => SFConnector.Instance.GetCasesFromArrayAsync(cases)); } finally { _isBusyBuildCases = false; } LoggerController.Log(casesData.Count + $" cases Retrived."); foreach (var item in casesData) { var caseViewModel = new CaseControlVM(item, this); CaseControls.Add(caseViewModel); } }
internal async Task DoBuildCasesFromStorage(Dictionary <string, CaseInfo> cases) { IList <ICase> casesData; try { _isBusyBuildCases = true; casesData = await Task.Run(() => SFConnector.Instance.GetCasesFromArrayAsync(cases.Keys.ToArray())); } finally { _isBusyBuildCases = false; } LoggerController.Log(casesData.Count + $" cases Retrived."); foreach (var item in casesData) { var caseViewModel = new CaseControlVM(item, this); caseViewModel.Index = cases[item.CaseNumber].Index; CaseControls.Add(caseViewModel); } }
private void DimmCasesInverted(IEnumerable <CaseControlVM> dimmAllButThis) { UnDimmAllCases(); var invert = CaseControls.Except(dimmAllButThis); if (invert.Count() > 0) { _dimmedCases = invert; } else { _dimmedCases = null; } if (_dimmedCases != null) { foreach (var item in _dimmedCases) { item.SearchDim = true; } } }
internal async Task OpenSingleCase(string caseNumber) { ICase caseData; try { _isBusyBuildCases = true; caseData = await Task.Run(() => SFConnector.Instance.GetTheCase(caseNumber)); } finally { _isBusyBuildCases = false; } LoggerController.Log(caseNumber + $" {CaseType.SF.ToString()} case Retrived."); if (caseData == null) { return; } var caseViewModel = new CaseControlVM(caseData, this); CaseControls.Add(caseViewModel); caseViewModel.Index = new Index(0, 0); }
public void OnCaseHeightChanged() { CanvasHeight = (CaseControls.Max(o => o.Top as int?) ?? 0) + ConrnerGap; RefreshSizes(); }
internal void RemoveCase(CaseControlVM caseControl) { CaseControls.Remove(caseControl); CasesStatesOperations.RemoveCase(caseControl, _previousQueue, TabHeader); }
internal void UpdateCasesPositions() { CasesStatesOperations.UpdateCasesPositions(CaseControls.ToList(), _previousQueue, TabHeader); CasesStatesOperations.UpdateLabelsPositions(CellLabels.ToList(), _previousQueue, TabHeader); }
private async Task BuildCasesAsync(string selection) { if (!string.IsNullOrEmpty(_previousQueue)) { UpdateCasesPositions(); } CaseControls.Clear(); CellLabels.Clear(); IList <ICase> casesData = default; try { _isBusyBuildCases = true; casesData = await Task.Run(() => SFConnector.Instance.GetCasesAsync(selection)); } catch (Exception e) { LoggerController.Log(e.Message); } _previousQueue = selection; LoggerController.Log(casesData.Count + $" cases Retrived."); CaseControls = await Task.Run(() => { ObservableCollection <CaseControlVM> cc = new ObservableCollection <CaseControlVM>(); foreach (var item in casesData) { var caseViewModel = new CaseControlVM(item, this); cc.Add(caseViewModel); CaseInfo positionInfo = null; try { positionInfo = CasesStatesOperations.GetCaseInfo(item.CaseNumber, selection, TabHeader); } catch (Exception e) { LoggerController.Log(e.Message); } if (positionInfo != null) { caseViewModel.Index = positionInfo.Index; } } return(cc); } ); try { //Add Labels from JSON var caseslist = await Task.Run(() => CasesStatesOperations.GetCasesList(selection, TabHeader)); foreach (LabelInfo item in caseslist.Labels.Values) { var success = Guid.TryParse(item.Guid, out Guid guid); if (!success) { continue; } CellLabels.Add(new CellLabelVM(this, item.Left, item.Top, item.Width, item.Height, item.Note, guid)); } } catch (Exception e) { LoggerController.Log(e.Message); } finally { _isBusyBuildCases = false; } }
private void RefreshSizes() { CaseControls.ToList().ForEach(o => o.RefreshPositionFromIndex()); }
public void OnLongCaseWidthChanged() { CanvasWidth = (CaseControls.Max(o => o.Left as int?) ?? 0) + ConrnerGap; RefreshSizes(); }