public void CalculateBalanceOfAllAccountsAndUpdateThem(string userId, FinancialOperation finOperation = null) { var bankAccountList = _unitOfWork.BankAccountRepo.GetWhereWithIncludes(x => x.Id > 0 && x.UserId == userId).ToList(); foreach (var bankAccount in bankAccountList) { var sumOfExpenses = _unitOfWork.FinancialOperatiosRepo. GetWhere(financialOperation => financialOperation.BankAccountId == bankAccount.Id && financialOperation.UserId == userId) .Sum(e => e.AmountOfMoney); if (finOperation?.BankAccount?.Id == bankAccount.Id) { sumOfExpenses += finOperation.AmountOfMoney; } var sumOfIncomes = _unitOfWork.FinancialOperatiosRepo .GetWhere(financialOperation => financialOperation.TargetBankAccountId == bankAccount.Id && financialOperation.UserId == userId) .Sum(e => e.AmountOfMoney); if (finOperation?.TargetBankAccount?.Id == bankAccount.Id) { sumOfIncomes += finOperation.AmountOfMoney; } bankAccount.Balance = bankAccount.InitialBalance - sumOfExpenses + sumOfIncomes; _unitOfWork.BankAccountRepo.Update(bankAccount); } }
public static GeneralFinOperationModel ToGeneralFinOperationModel(this FinancialOperation finOp) { return(new GeneralFinOperationModel { Type = finOp.Type, Value = finOp.Value, Date = finOp.Date, Description = finOp.Description, CategoryName = finOp.Category?.Name ?? Constants.NO_CATEGORY }); }
public static AddEditFinOperationDto ToAddEditFinOperationDto(this FinancialOperation finOp) { return(new AddEditFinOperationDto { Id = finOp.Id, Date = finOp.Date, Description = finOp.Description, CategoryId = finOp.CategoryId, Type = finOp.Type, Value = finOp.Value, Tags = finOp.Tags.Select(tag => tag.ToSimpleTagDto()).ToList() }); }
public static FinOperationListItemDto ToFinOperationListItemDto(this FinancialOperation finOp) { return(new FinOperationListItemDto { Id = finOp.Id, Date = finOp.Date, Description = finOp.Description, Type = finOp.Type, Value = finOp.Value, CategoryName = finOp.Category?.Name, Tags = finOp.Tags.Select(tag => tag.ToSimpleTagDto()).ToList() }); }
public void Add(AddEditFinOperationDto model) { FinancialOperation finOperation = model.ToFinancialOperation(); List <Tag> tags = this.ExtractNewTags(model); tags.AddRange(this.ExtractExistingTags(model.Tags)); finOperation.Tags = tags; this.repository.AddRange(finOperation.Clone(model.Amount)); this.repository.SaveChanges(); }
public void Create(FinancialOperationCreateDto financialOperationCreateDto) { FinancialOperation financialOperation = Mapper.Map <FinancialOperation>(financialOperationCreateDto); repository.Add(financialOperation); }