private void RefreshGridData(CollectionAssignmentModel item) { if (item != null && this.AllCollectionAssignmentDetails != null) { var rgridItem = this.AllCollectionAssignmentDetails.FirstOrDefault(d => d.QueueID == item.QueueID && d.ContractId == item.ContractId && d.ClientNumber == item.ClientNumber); var rfilterItem = this.FilteredItems.FirstOrDefault(d => d.QueueID == item.QueueID && d.ContractId == item.ContractId && d.ClientNumber == item.ClientNumber); if (rgridItem != null) { int rindex = this.AllCollectionAssignmentDetails.IndexOf(rgridItem); this.AllCollectionAssignmentDetails.RemoveAt(rindex); this.AllCollectionAssignmentDetails.Insert(rindex, item); this.IsNoCheckValidQueue = true; this.SelectedQueue = item; this.IsNoCheckValidQueue = false; } if (rfilterItem != null) { int rindex = this.FilteredItems.IndexOf(rgridItem); this.FilteredItems.RemoveAt(rindex); this.FilteredItems.Insert(rindex, item); } } }
private async Task SetSelectedQueueAsync(CollectionAssignmentModel value) { bool canProceed = true; if (this.ActiveViewModel != null && this.ActiveViewModel.IsCheckedOut && this.isChanged) { //this.ActiveViewModel.ConfirmationWindow.Raise(new Insyston.Operations.WPF.ViewModels.Common.ConfirmationWindowViewModel(null) { Content = "Data has been modified. Are you sure you wish to proceed without saving?", Title = "Confirm Save - Collection Queue Filter" }, // (callBack) => // { // if (callBack.Confirmed == false) // { // canProceed = false; // } // }); ConfirmationWindowView confirm = new ConfirmationWindowView(); ConfirmmationViewModel confirmViewModel = new ConfirmmationViewModel(); confirmViewModel.Content = "Changes have not been saved. Click OK to proceed without saving changes."; confirmViewModel.Title = "Confirm Save - Collection Assignment"; confirm.DataContext = confirmViewModel; confirm.ShowDialog(); if (confirm.DialogResult == false) { canProceed = false; } else { this.isChanged = false; } } if (canProceed) { this.RaiseActionsWhenChangeStep(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked); this.GridStyle = (Brush)Application.Current.FindResource("GridStyleNotEdit"); this.SetBusyAction(LoadingText); this.Edit.SetBusyAction(LoadingText); this.ActiveViewModel = this; var strMessage = await this.ValidateSelectedQueue(value); this.ResetBusyAction(); this.Edit.ResetBusyAction(); if (!string.IsNullOrEmpty(strMessage)) { NotificationValidate notificationValidate = new NotificationValidate(); NotificationValidateViewModel notificationViewModel = new NotificationValidateViewModel(); notificationViewModel.Content = strMessage; notificationViewModel.Title = "Collection Assignment"; notificationValidate.DataContext = notificationViewModel; notificationValidate.Show(); //MessageBox.Show(strMessage); //this.ShowMessageAsync(strMessage, "Collection Assignment"); if (ResetSelectedItem != null) { ResetSelectedItem(this, null); } return; } this.IsChanged = false; await UnLockAsync(); this.SetField(ref _SelectedQueue, value, () => SelectedQueue); if (value != null) { await this.OnStepAsync(EnumSteps.SelectQueue); } } }
public async Task<string> ValidateSelectedQueue(CollectionAssignmentModel QueueItem) { var queueRefresh = await QueueAssignmentFunctions.GetAllQueueAssignmentsAsync(CurrentEntityId, QueueItem.ContractId, QueueItem.QueueID, QueueItem.ClientNumber); var CollectionQueueSetting = await CollectionsQueueSettingsFunctions.ReadCollectionsSystemSettingsAsync(); if (queueRefresh.Any()) { QueueItem = queueRefresh.FirstOrDefault(); } string message = string.Empty; string messageNotExisted = "Contract no longer exists in the Queue"; if (CollectionQueueSetting != null) { bool isValidMinAmount = true; bool isValidMinArrearsDays = true; decimal? arrearsValue = 0; if (CollectionQueueSetting.MinimumArrearsPercent.HasValue && CollectionQueueSetting.MinimumArrearsPercent > 0) { arrearsValue = await QueueAssignmentFunctions.GetQueueArrears(QueueItem.ContractId); isValidMinAmount = arrearsValue >= CollectionQueueSetting.MinimumArrearsPercent.Value; } else { isValidMinAmount = CollectionQueueSetting.MinimumArrearsAmount.HasValue ? QueueItem.Arrears >= CollectionQueueSetting.MinimumArrearsAmount : true; } isValidMinArrearsDays = CollectionQueueSetting.MinimumArrearsDays.HasValue ? QueueItem.ArrearsDays >= CollectionQueueSetting.MinimumArrearsDays : true; if (!isValidMinAmount || !isValidMinArrearsDays) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } } string userLock = await QueueAssignmentFunctions.GetLockContract(QueueItem.ClientNumber); if (!string.IsNullOrEmpty(userLock)) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); string userId = ((OperationsPrincipal)Thread.CurrentPrincipal).Identity.User.UserEntityId.ToString(); if (userLock != userId) { string userLocking = await QueueAssignmentFunctions.GetUserById(userLock); message = userLocking + " currently has this record locked."; } else { message = "You currently have this record locked."; } return message; } bool isValidCollectionQueue = await QueueAssignmentFunctions.GetValidCollectionQueueItem(QueueItem.QueueID, QueueItem.ContractId); if (!isValidCollectionQueue) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } bool isAssignee = true; bool isInternalCompany = true; bool isFinancier = true; bool isWorkGroup = true; bool isState = true; bool isArrears = true; bool isArrearsDays = true; bool isInvestmentBalance = true; bool isClientArrears = true; bool isClientArrearsDays = true; bool isClientInvestmentBalance = true; bool isClientName = true; bool isIntroducer = true; List<CollectionQueueFilterItem> filterItems = await QueueAssignmentFunctions.GetCollectionQueueFilterItem(QueueItem.QueueID); List<CollectionQueueFilterItem> assignees = filterItems.Where(d => d.FilterTypeID == (int)FilterTypeID.Assignee).ToList(); List<CollectionQueueFilterItem> internalCompany = filterItems.Where(d => d.FilterTypeID == (int)FilterTypeID.Company).ToList(); List<CollectionQueueFilterItem> financiers = filterItems.Where(d => d.FilterTypeID == (int)FilterTypeID.Financier).ToList(); List<CollectionQueueFilterItem> workGroups = filterItems.Where(d => d.FilterTypeID == (int)FilterTypeID.Workgroup).ToList(); List<CollectionQueueFilterItem> states = filterItems.Where(d => d.FilterTypeID == (int)FilterTypeID.State).ToList(); if (assignees.Count > 0) { isAssignee = QueueItem.AssigneeID.HasValue ? assignees.Select(d => d.FieldID).Contains(QueueItem.AssigneeID.Value) : false; } if (internalCompany.Count > 0) { isInternalCompany = QueueItem.InternalCompanyNodeID.HasValue ? internalCompany.Select(d => d.FieldID).Contains(QueueItem.InternalCompanyNodeID.Value) : false; } if (financiers.Count > 0) { isFinancier = QueueItem.FinancierNodeID.HasValue ? financiers.Select(d => d.FieldID).Contains(QueueItem.FinancierNodeID.Value) : false; } if (workGroups.Count > 0) { isWorkGroup = QueueItem.WorkGroupID.HasValue ? workGroups.Select(d => d.FieldID).Contains(QueueItem.WorkGroupID.Value) : false; } if (states.Count > 0) { isState = QueueItem.StateID.HasValue ? states.Select(d => d.FieldID).Contains(QueueItem.StateID.Value) : false; } if (!isAssignee || !isInternalCompany || !isFinancier || !isWorkGroup || !isState) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } ObservableCollection<CollectionQueueFilterString> CollectionQueueFilters = new ObservableCollection<CollectionQueueFilterString>(await QueueManagmentFunctions.GetCollectionQueueFilterStringByQueueID(QueueItem.QueueID)); CollectionQueueFilterString filterClientName = CollectionQueueFilters.Where(f => f.FilterTypeID == (int)FilterTypeID.ClientName).FirstOrDefault(); if (filterClientName != null) { isClientName = IsValidString(QueueItem.ClientName, filterClientName); } if (!isClientName) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } CollectionQueueFilterString filterIntroducer = CollectionQueueFilters.Where(f => f.FilterTypeID == (int)FilterTypeID.Introducer).FirstOrDefault(); if (filterIntroducer != null) { isIntroducer = IsValidString(QueueItem.Introducer, filterIntroducer); } if (!isIntroducer) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } CollectionQueueFilter queueFilter = await QueueAssignmentFunctions.GetCollectionQueueFilter(QueueItem.QueueID); if (queueFilter != null) { isArrears = IsValidNumber(QueueItem.Arrears, queueFilter.MaxContractArrearsAmount, queueFilter.MinContractArrearsAmount, queueFilter.IsAndContractArrearsAmount, queueFilter.IsEqualMaxContractArrearsAmount, queueFilter.IsEqualMinContractArrearsAmount); isArrearsDays = IsValidNumber(QueueItem.ArrearsDays.HasValue ? (decimal)QueueItem.ArrearsDays : 0, queueFilter.MaxContractArrearsDays, queueFilter.MinContractArrearsDays, queueFilter.IsAndContractArrearsDays, queueFilter.IsEqualMaxContractArrearsDays, queueFilter.IsEqualMinContractArrearsDays); isInvestmentBalance = IsValidNumber(QueueItem.InvestmentBalance ?? 0, queueFilter.MaxContractInvestmentBalance, queueFilter.MinContractInvestmentBalance, queueFilter.IsAndContractInvestmentBalance, queueFilter.IsEqualMaxContractInvestmentBalance, queueFilter.IsEqualMinContractInvestmentBalance); if (!isArrears || !isArrearsDays || !isInvestmentBalance) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } if (queueFilter.MaxClientArrearsAmount.HasValue || queueFilter.MinClientArrearsAmount.HasValue || queueFilter.MaxClientArrearsDays.HasValue || queueFilter.MinClientArrearsDays.HasValue || queueFilter.MaxClientInvestmentBalance.HasValue || queueFilter.MinClientInvestmentBalance.HasValue) { ClientArrearsView csummary = (await QueueAssignmentFunctions.GetClientArrearsView(QueueItem.ClientNumber)).FirstOrDefault(); decimal? clientArrearsAmout = 0; decimal? clientArrearsDay = 0; decimal? clientInvestBalance = 0; if (csummary != null) { clientArrearsAmout = csummary.ClientArrears; clientArrearsDay = csummary.ClientDaysArrears; clientInvestBalance = csummary.ClientInvestmentBalance; } isClientArrears = IsValidNumber(clientArrearsAmout, queueFilter.MaxClientArrearsAmount, queueFilter.MinClientArrearsAmount, queueFilter.IsAndClientArrearsAmount, queueFilter.IsEqualMaxClientArrearsAmount, queueFilter.IsEqualMinClientArrearsAmount); isClientArrearsDays = IsValidNumber(clientArrearsDay, queueFilter.MaxClientArrearsDays, queueFilter.MinClientArrearsDays, queueFilter.IsAndClientArrearsDays, queueFilter.IsEqualMaxClientArrearsDays, queueFilter.IsEqualMinClientArrearsDays); isClientInvestmentBalance = IsValidNumber(clientInvestBalance, queueFilter.MaxClientInvestmentBalance, queueFilter.MinClientInvestmentBalance, queueFilter.IsAndClientInvestmentBalance, queueFilter.IsEqualMaxClientInvestmentBalance, queueFilter.IsEqualMinClientInvestmentBalance); if (!isClientArrears || !isClientArrearsDays || !isClientInvestmentBalance) { this.RaiseStepChanged(EnumScreen.CollectionAssignment, EnumSteps.ItemLocked, this.SelectedQueue); return messageNotExisted; } } } return message; }
public override void Dispose() { Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => { this.isChanged = false; this.UnLockAsync(); if (this._AllCollectionAssignmentDetails != null) { this._AllCollectionAssignmentDetails.Clear(); this._AllCollectionAssignmentDetails = null; } if (this._Items != null) { this._Items.Clear(); this._Items = null; } if (this._ListAssignees != null) { this._ListAssignees.Clear(); this._ListAssignees = null; } if (this._ListContacts != null) { this._ListContacts.Clear(); this._ListContacts = null; } if (this._ListContractSummary != null) { this._ListContractSummary.Clear(); this._ListContractSummary = null; } if (this._ListContractHistory != null) { this._ListContractHistory.Clear(); this._ListContractHistory = null; } if (this._ListNoteTask != null) { this._ListNoteTask.Clear(); this._ListNoteTask = null; } if (this._ItemsAssignmentFilter != null) { this._ItemsAssignmentFilter.Clear(); this._ItemsAssignmentFilter = null; } if (this._SelectedQueue != null) { this._SelectedQueue.Dispose(); this._SelectedQueue = null; } if (this.Edit != null) { this.Edit.Dispose(); this.Edit = null; } base.Dispose(); })); }