private async Task <bool> BuildQueueAsync()
        {
            bool success;

            QueueItems = default(string[]);
            try
            {
                _isBusyBuildQueues = true;
                BusySpinnerVM.StartSpinning();
                QueueItems = await Task.Run(() => SFConnector.Instance.GetCasesQueues());

                success = true;
            }
            catch (Exception ex)
            {
                LoggerController.Log(ex);
                success = false;
            }
            finally
            {
                _isBusyBuildQueues = false;
            }
            BusySpinnerVM.StopSpinning(success);
            return(success);
        }
Example #2
0
        private void LoadColumnState()
        {
            try
            {
                var columnState = ColumnSettingsOperations.LoadColumnState(_tabIdentifier);
                if (columnState == null)
                {
                    return;
                }

                int newIndex = 0;
                foreach (var col in columnState)
                {
                    int oldIndex = 0;
                    for (int i = 0; i < casesGridView.Columns.Count; i++)
                    {
                        if (casesGridView.Columns[i].Header.ToString().Equals(col.ColumnName))
                        {
                            oldIndex = i;
                            break;
                        }
                    }
                    casesGridView.Columns[oldIndex].Width = col.Width;
                    casesGridView.Columns.Move(oldIndex, newIndex++);
                }
                _columnsLoaded = true;
            }
            catch (Exception e)
            {
                LoggerController.Log(e, "Unable to read columns setting file or file has invalid formatting");
            }
        }
 internal async static Task <T> TryNTimesAsync <T>(Func <Task <T> > func, int times, string initialMessage = "")
 {
     while (times > 0)
     {
         LoggerController.Log(initialMessage);
         try
         {
             return(await func());
         }
         catch (Exception e)
         {
             if (--times <= 0)
             {
                 LoggerController.Log(e);
                 throw;
                 //return default(T);
             }
             LoggerController.Log(e);
             LoggerController.Log("Repeating in 5 seconds");
             Thread.Sleep(5000);
         }
     }
     //No check connect with 0 times.
     return(await func());
 }
Example #4
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value.GetType() != typeof(Priority))
            {
                return(null);
            }
            var priority = (Priority)value;

            switch (priority)
            {
            case Priority.Low:
                return((Brush)Application.Current.MainWindow.FindResource("Priority.Low.Brush"));

            case Priority.Med:
                return((Brush)Application.Current.MainWindow.FindResource("Priority.Mid.Brush"));

            case Priority.High:
                return((Brush)Application.Current.MainWindow.FindResource("Priority.High.Brush"));

            case Priority.Critical:
                return((Brush)Application.Current.MainWindow.FindResource("Priority.Critical.Brush"));

            case Priority.NotApplicable:
                return((Brush)Application.Current.MainWindow.FindResource("Priority.NotApplicable.Brush"));

            default:
                LoggerController.Log("No Color match for Case Priority " + priority.ToString());
                return(null);
            }
        }
Example #5
0
        internal void AddCellLabel(Point position)
        {
            Index index = Index.GetCellCornerPoint((int)position.X, (int)position.Y, CaseWidth, CaseHeight);
            var   label = new CellLabelVM(this, index.X, index.Y);

            CellLabels.Add(label);
            LoggerController.Log($"Added Label to {index.X.ToString()}, {index.Y.ToString()}");
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value.GetType() != typeof(SFStatus))
            {
                return(null);
            }
            var status = value as SFStatus;

            switch (status.Value)
            {
            case SFStatusE.New:
                return((Brush)Application.Current.MainWindow.FindResource("Status.New.Brush"));

            case SFStatusE.InReview:
                return((Brush)Application.Current.MainWindow.FindResource("Status.InReview.Brush"));

            case SFStatusE.Reviewed:
                return((Brush)Application.Current.MainWindow.FindResource("Status.Reviewed.Brush"));

            case SFStatusE.InBacklog:
                return((Brush)Application.Current.MainWindow.FindResource("Status.InBacklog.Brush"));

            case SFStatusE.InProcess:
                return((Brush)Application.Current.MainWindow.FindResource("Status.InProcess.Brush"));

            case SFStatusE.InDevelopment:
                return((Brush)Application.Current.MainWindow.FindResource("Status.InDevelopment.Brush"));

            case SFStatusE.InQA:
                return((Brush)Application.Current.MainWindow.FindResource("Status.InQA.Brush"));

            case SFStatusE.AwaitingApproval:
                return((Brush)Application.Current.MainWindow.FindResource("Status.AwaitingApproval.Brush"));

            case SFStatusE.PendingRelease:
                return((Brush)Application.Current.MainWindow.FindResource("Status.PendingRelease.Brush"));

            case SFStatusE.OnHold:
                return((Brush)Application.Current.MainWindow.FindResource("Status.OnHold.Brush"));

            case SFStatusE.Closed:
                return((Brush)Application.Current.MainWindow.FindResource("Status.Closed.Brush"));

            case SFStatusE.Cancelled:
                return((Brush)Application.Current.MainWindow.FindResource("Status.Cancelled.Brush"));

            case SFStatusE.ReOpened:
                return((Brush)Application.Current.MainWindow.FindResource("Status.ReOpened.Brush"));

            default:
                LoggerController.Log("No Color match for Case Status " + status.Value.ToString());
                return(null);
            }
        }
Example #7
0
        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;
        }
Example #8
0
        public WorkAreaVM()
        {
            Tabs = new ObservableCollection <TabsContainer>();
            TabsContainer.Container = Tabs;

            try
            {
                foreach (var tab in CasesStatesOperations.GetTabs())
                {
                    Tabs.Add(new TabsContainer(new SortBarPannelVM(tab)));
                }
            }
            catch (Exception e)
            {
                LoggerController.Log(e.Message);
            }
            AddEmptyTab = new RelayCommand(DoAddEmptyTab);
        }
Example #9
0
        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);
            }
        }
Example #10
0
        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);
            }
        }
Example #11
0
        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);
        }
Example #12
0
        private async Task BuildCasesAsync(string selection)
        {
            IList <ICase> casesData;

            try
            {
                _isBusyBuildCases = true;
                if (_caseType == CaseType.SF)
                {
                    casesData = await Task.Run(() => SFConnector.Instance.GetCasesAsync(selection));
                }
                else
                {
                    throw new ArgumentException($"CaseType is not set to a proper type: {_caseType.ToString()}");
                }
            }
            finally
            {
                _isBusyBuildCases = false;
            }
            LoggerController.Log(casesData.Count + $" {_caseType.ToString()} cases Retrived.");
            Cases        = new ObservableCollection <ICase>(casesData);
            SelectedCase = (Cases.Count > 0) ? Cases[0] : default(ICase);
        }
Example #13
0
        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;
            }
        }
Example #14
0
 public void HandleError(Exception e)
 {
     LoggerController.Log(e);
     //throw new Exception();
 }