/// <summary> /// Returnerer angivelse af, om kommandoen kan udføres på den givne ViewModel. /// </summary> /// <param name="viewModel">ViewModel, hvorpå kommandoen skal udføres.</param> /// <returns>Angivelse af, om kommandoen kan udføres på den givne ViewModel.</returns> protected override bool CanExecute(IBogføringViewModel viewModel) { try { if (BogføringViewModel.ValidateDatoAsText(viewModel.DatoAsText) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateBilag(viewModel.Bilag) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateKontonummer(viewModel.Kontonummer) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateTekst(viewModel.Tekst) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateBudgetkontonummer(viewModel.Budgetkontonummer) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateCurrency(viewModel.DebitAsText) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateCurrency(viewModel.KreditAsText) != ValidationResult.Success) { return(false); } if (BogføringViewModel.ValidateAdressekonto(viewModel.Adressekonto) != ValidationResult.Success) { return(false); } if (Math.Abs(viewModel.Debit) + Math.Abs(viewModel.Kredit) <= 0M) { return(false); } if (viewModel.IsWorking) { return(false); } return(_isBusy == false); } catch { return(false); } }
/// <summary> /// Tilføjer en bogføringslinje til regnskabet på baggrund af ViewModel til bogføring. /// </summary> /// <param name="bogføringViewModel">ViewModel, som er grundlaget for bogføringslinjen, der skal tilføjes.</param> /// <param name="bogføringsresultatModel">Model indeholdende resultatet af endt bogføring.</param> /// <param name="arguments">Argument til tilføjelse af en bogføringslinjen til regnskabet.</param> private void HandleResult(IBogføringViewModel bogføringViewModel, IBogføringsresultatModel bogføringsresultatModel, object arguments) { if (bogføringViewModel == null) { throw new ArgumentNullException("bogføringViewModel"); } if (bogføringsresultatModel == null) { throw new ArgumentNullException("bogføringsresultatModel"); } if (arguments == null) { throw new ArgumentNullException("arguments"); } var regnskabViewModel = bogføringViewModel.Regnskab; if (regnskabViewModel == null) { return; } try { var bogføringslinjeViewModel = new BogføringViewModel(regnskabViewModel, bogføringsresultatModel.Bogføringslinje, _finansstyringRepository, ExceptionHandler); regnskabViewModel.BogføringslinjeAdd(bogføringslinjeViewModel); regnskabViewModel.NyhedAdd(new NyhedViewModel(bogføringsresultatModel.Bogføringslinje, bogføringslinjeViewModel.Image)); foreach (var bogføringsadvarselModel in bogføringsresultatModel.Bogføringsadvarsler) { regnskabViewModel.BogføringsadvarselAdd(new BogføringsadvarselViewModel(regnskabViewModel, bogføringslinjeViewModel, bogføringsadvarselModel, DateTime.Now)); } if (string.IsNullOrEmpty(bogføringViewModel.Kontonummer) == false) { var kontoViewModel = regnskabViewModel.Konti.FirstOrDefault(m => string.Compare(m.Kontonummer, bogføringViewModel.Kontonummer, StringComparison.Ordinal) == 0); if (kontoViewModel != null) { var refreshCommand = kontoViewModel.RefreshCommand; if (refreshCommand.CanExecute(kontoViewModel)) { refreshCommand.Execute(kontoViewModel); } } } if (string.IsNullOrEmpty(bogføringViewModel.Budgetkontonummer) == false) { var budgetkontoViewModel = regnskabViewModel.Budgetkonti.FirstOrDefault(m => string.Compare(m.Kontonummer, bogføringViewModel.Budgetkontonummer, StringComparison.Ordinal) == 0); if (budgetkontoViewModel != null) { var refreshCommand = budgetkontoViewModel.RefreshCommand; if (refreshCommand.CanExecute(budgetkontoViewModel)) { refreshCommand.Execute(budgetkontoViewModel); } } } if (bogføringViewModel.Adressekonto != 0) { var adressekontoViewModelCollection = regnskabViewModel.Debitorer.Where(m => m.Nummer == bogføringViewModel.Adressekonto).ToList(); adressekontoViewModelCollection.AddRange(regnskabViewModel.Kreditorer.Where(m => m.Nummer == bogføringViewModel.Adressekonto).ToList()); foreach (var adressekontoViewModel in adressekontoViewModelCollection) { var refreshCommand = adressekontoViewModel.RefreshCommand; if (refreshCommand.CanExecute(adressekontoViewModel)) { refreshCommand.Execute(adressekontoViewModel); } } } if (OnBogført != null) { OnBogført.Invoke(this, new EmptyEventArgs()); } } catch (Exception ex) { throw new IntranetGuiSystemException(Resource.GetExceptionMessage(ExceptionMessage.CommandError, "BogføringAddCommand", ex.Message), ex); } finally { var bogføringSetCommand = regnskabViewModel.BogføringSetCommand; if (bogføringSetCommand != null && bogføringSetCommand.CanExecute(regnskabViewModel)) { bogføringSetCommand.Execute(regnskabViewModel); } } }