public async Task <int> Add(TransactionTypeToSaveDto entity) { try { TransactionType transactionType = new TransactionType { Description = entity.Description, IsActive = entity.IsActive, IsVisible = true, SortId = 0, CreatedBy = CurrentUser.User.Id, CreatedDate = DateTime.Now }; _unitOfWork.TransactionType.Add(transactionType); /*validation*/ List <TransactionTypeDetail> transactionTypeDetails = new List <TransactionTypeDetail>(); List <TransactionCode> transactionCodes = new List <TransactionCode>(); TransactionCode transactionCode; foreach (var detail in entity.Details) { if (detail.AccountId != null && detail.AccountId > 0) { var account = await _unitOfWork.Account.Get(Convert.ToInt32(detail.AccountId)); if (account == null) { throw new System.Exception("Invalid account."); } } transactionCode = await _unitOfWork.TransactionCode.Get(detail.TranCode); if (transactionCode == null) { throw new System.Exception("Invalid transaction code."); } transactionCodes.Add(transactionCode); _unitOfWork.TransactionTypeDetail.Add(new TransactionTypeDetail { TransactionTypeId = transactionType.Id, TranCode = detail.TranCode, AccountId = detail.AccountId == 0 ? null : detail.AccountId, IsActive = detail.IsActive, IsVisible = true, CreatedBy = CurrentUser.User.Id, CreatedDate = DateTime.Now }); } var transactionCodeCount = transactionCodes.Select(x => x.IsDebit).Distinct().Count(); if (transactionCodeCount == 1) { throw new System.Exception("Use different transaction code."); } /*commit*/ _unitOfWork.Complete(); return(transactionType.Id); } catch (Exception e) { throw e; } }
public async Task <IActionResult> Post(TransactionTypeToSaveDto transactionTypeToSaveDto) { var id = await _serviceManager.TransactionType.Add(transactionTypeToSaveDto); return(Ok(id)); }