示例#1
0
        public async Task <Debt> NewDebtAsync(DebtRequest request, string userId)
        {
            var debtDto = new DebtDto
            {
                UserId       = userId,
                CreatedAt    = DateTime.UtcNow,
                Name         = request.Name,
                Description  = request.Description,
                InitialValue = request.InitialValue,
                CurrencyId   = request.CurrencyId,
                BudgetId     = request.BudgetId
            };

            var debt = _mapper.Map <Debt>(debtDto);

            var created = await _baseRepository.CreateEntityAsync(debt);

            return(created);
        }
示例#2
0
        public async Task <IActionResult> CreateDebt([FromBody] DebtRequest request)
        {
            var userId = User.Claims.FirstOrDefault(c => c.Type == "id").Value;

            // check if user exists
            var userExists = await _identityService.CheckIfUserExists(userId);

            if (!userExists)
            {
                return(NotFound(new ErrorResponse(new ErrorModel {
                    Message = $"There is no user with id: {userId}"
                })));
            }

            // check if new debt budgetId is correct
            var budget = await _budgetService.GetBudgetAsync(request.BudgetId);

            if (budget == null)
            {
                return(NotFound(new ErrorResponse(new ErrorModel {
                    Message = $"There is no budget with id: {request.BudgetId}"
                })));
            }

            if (budget.UserId != userId)
            {
                return(Forbid());
            }

            // create debt
            var newDebt = await _debtService.NewDebtAsync(request, userId);

            if (newDebt == null)
            {
                return(BadRequest(new ErrorResponse(new ErrorModel {
                    Message = "Could not create new debt"
                })));
            }

            var locationUri = _uriService.GetDebtUri(newDebt.Id);

            return(Created(locationUri, new Response <DebtResponse>(_mapper.Map <DebtResponse>(newDebt))));
        }