示例#1
0
        public async Task <AbstractAnswer <Bill> > Handle(CreateBillCommand request, CancellationToken cancellationToken)
        {
            try
            {
                var tempId = Guid.NewGuid();

                var foundedUser = await context.Users
                                  .FirstOrDefaultAsync(x => x.Id == request.UserId, cancellationToken);

                if (foundedUser is null)
                {
                    return(CreateFailed(new[] { "User doesn't exists" }));
                }

                context.Bills.Add(new BillDB
                {
                    Id     = tempId,
                    Title  = request.Title,
                    UserId = request.UserId,
                });

                await context.SaveChangesAsync(cancellationToken);

                return(CreateSuccess(new Bill
                {
                    Id = tempId,
                    Title = request.Title,
                }));
            }
            catch
            {
                return(CreateFailed(new[] { "Database error" }));
            }
        }
示例#2
0
        private async Task Handle(CreateBillCommand command)
        {
            await HandleCommand(command, async x =>
            {
                var recipientAddress = new AddressValueObject(command.City, command.Street, command.Number);

                var bill = await _billFactory.Create(command.Id, command.Metadata.TenantId, command.Name, (BillType)command.Type, command.RecipientName, recipientAddress);

                await _billRepository.SaveAsync(bill);
            });
        }
示例#3
0
        public async Task <ActionResult> CreateBill(CreateBillCommand command)
        {
            var result = await _mediator.Send(command);

            return(result.IsSuccess ? Ok() : StatusCode(500));
        }
示例#4
0
 public async Task <IActionResult> Post([FromBody] CreateBillCommand command)
 {
     return(await SendCommand(command));
 }