/// <summary> /// Delete an entity. /// </summary> /// <param name="model"></param> public void Delete(BankMovementViewModel model) { var entity = model.ToEntity(); this._BankMovementsRepository.Delete(entity); #region Commit Changes this._unitOfWork.Commit(); #endregion }
/// <summary> /// Throw an exception if name is exist. /// </summary> /// <param name="model">BankMovement view model</param> public void ThrowExceptionIfExist(BankMovementViewModel model) { //ConditionFilter<BankMovement, long> condition = new ConditionFilter<BankMovement, long> //{ // Query = (entity => // entity.Code == model.Code && // entity.Id != model.Id) //}; //var existEntity = this._BankMovementsRepository.Get(condition).FirstOrDefault(); //if (existEntity != null) // throw new ItemAlreadyExistException(); }
/// <summary> /// Update an entity. /// </summary> /// <param name="model"></param> /// <returns></returns> public BankMovementViewModel Update(BankMovementViewModel model) { this.ThrowExceptionIfExist(model); this._closedMonthsService.ValidateIfMonthIsClosed(model.Date.Value); var entity = this._BankMovementsRepository.Get(model.Id); entity.AccountChartId = model.AccountChartId; entity.Amount = model.Amount; entity.BankId = model.BankId; entity.Code = model.Code; entity.Date = model.Date; entity.JournalTypeId = model.JournalTypeId; entity.SafeId = model.SafeId; entity.ToBankId = model.ToBankId; var ar = entity.ChildTranslatedBankMovements.FirstOrDefault(e => e.Language == Framework.Common.Enums.Language.Arabic); var en = entity.ChildTranslatedBankMovements.FirstOrDefault(e => e.Language == Framework.Common.Enums.Language.English); ar.Description = model.DescriptionAr; en.Description = model.DescriptionEn; var userId = this._currentUserService.CurrentUserId; if (entity.FirstModifiedByUserId == null) { entity.FirstModifiedByUserId = userId; } else { entity.LastModifiedByUserId = userId; } entity = this._BankMovementsRepository.Update(entity); #region Commit Changes this._unitOfWork.Commit(); #endregion model = entity.ToModel(); return(model); }
/// <summary> /// Add an entity. /// </summary> /// <param name="model"></param> /// <returns></returns> public BankMovementViewModel Add(BankMovementViewModel model) { if (model.Journal == null) { this.ThrowExceptionIfExist(model); this._closedMonthsService.ValidateIfMonthIsClosed(model.Date.Value); var entity = model.ToEntity(); if (entity.JournalTypeId == (long)JournalTypeEnum.PaymentPapers) { IList <long> list = new List <long>(); foreach (var item in model.Cheques) { ClosedCheque closedCheque = new ClosedCheque { BankMovement = entity, DonationId = item.Id }; this._closedChequeRepository.Add(closedCheque); var donationEntity = this._donationsRepository.Get(item.Id); //TODO: //if (donationEntity.IsPosted) //{ donationEntity.Exchangeable = true; list.Add(entity.Id); //} donationEntity = this._donationsRepository.Update(donationEntity); } this._journalPostingsService.PostChecksUnderCollectionOfReceiptsMovement(list); } entity.CreatedByUserId = this._currentUserService.CurrentUserId; DateTime now = DateTime.Now; var ar = new BankMovement { Description = model.DescriptionAr, Language = Language.Arabic, CreationDate = now }; var en = new BankMovement { Description = model.DescriptionEn, Language = Language.English, CreationDate = now }; entity.ChildTranslatedBankMovements.Add(ar); entity.ChildTranslatedBankMovements.Add(en); entity = this._BankMovementsRepository.Add(entity); #region Commit Changes this._unitOfWork.Commit(); #endregion //entity.Code = entity.Id.ToString(); //#region Commit Changes //this._unitOfWork.Commit(); //#endregion //this._journalPostingsService.TryPostAutomatic(entity.Id, MovementType.BankMovement); if (entity.JournalTypeId == (long)JournalTypeEnum.DirectDonations && model.CostCenters != null && model.CostCenters.Any()) { foreach (var item in model.CostCenters) { var bankMovementCosCenter = new BankMovementCostCenters() { BankMovementId = entity.Id, CostCenterId = item.Id, Amount = (double)item.AssignValue }; _bankMovementCostCentersRepository.Add(bankMovementCosCenter); #region Commit Changes this._unitOfWork.Commit(); #endregion } } model = entity.ToModel(); model.Journal = this._journalPostingsService.Post(model.Id, MovementType.BankMovement); model.Journal.Date = model.Date.Value; foreach (var Journal in model.Journal.journalDetails) { Journal.AccountFullCode = this._accountChartsRepository.Get().FirstOrDefault(x => x.Id == Journal.AccountId).FullCode; } //model.Journal.DescriptionAr = model.DescriptionAr; //model.Journal.DescriptionEn = model.DescriptionEn; } else if (model.Journal.PostingStatus == PostingStatus.Approved) { this._journalsService.AddJournal(model.Journal, PostingStatus.NeedAprove); var entity = this._BankMovementsRepository.Get(model.Id); entity.IsPosted = false; entity.PostingDate = DateTime.Now; entity.PostedByUserId = this._currentUserService.CurrentUserId; entity = this._BankMovementsRepository.Update(entity); this._unitOfWork.Commit(); } else if (model.Journal.PostingStatus == PostingStatus.Rejected) { } return(model); }