예제 #1
0
        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;
            }
        }
예제 #2
0
        public async Task <IActionResult> Post(TransactionTypeToSaveDto transactionTypeToSaveDto)
        {
            var id = await _serviceManager.TransactionType.Add(transactionTypeToSaveDto);

            return(Ok(id));
        }