コード例 #1
0
        public async Task <IActionResult> UpdateAsync([FromBody] PersonXTicketDto model)
        {
            if (model == null)
            {
                return(NotFound());
            }

            var currentUser = await _identityService.GetCurrentUser();

            if (currentUser == null)
            {
                return(BadRequest(new { error = "You are not allowed!" }));
            }

            var person = await _identityService.GetPersonByUserId(currentUser.Id);

            if (person == null)
            {
                return(BadRequest(new { error = "Person does not exist for this user" }));
            }

            var personXTicket = await _personXTicketService.GetPersonXTicketById(model.Id);

            if (personXTicket == null)
            {
                return(BadRequest(new { error = "Selected personXTicket was not found" }));
            }

            var ticket = await _ticketService.GetTicketById(personXTicket.TicketId);

            if (ticket == null)
            {
                return(BadRequest(new { error = "Selected ticket was not found" }));
            }

            ticket.Remaining           += model.Returning;
            personXTicket.NrOfReturned += model.Returning;

            if (personXTicket.NrOfReturned == personXTicket.NrOfBought)
            {
                await _personXTicketService.DeletePersonXTicket(personXTicket, ticket);
            }
            else
            {
                await _personXTicketService.UpdatePersonXTicket(personXTicket, ticket);
            }



            return(Ok());
        }
コード例 #2
0
        public async Task <IActionResult> Create([FromBody] PersonXTicketDto model)
        {
            var currentUser = await _identityService.GetCurrentUser();

            if (currentUser == null)
            {
                return(BadRequest(new { error = "You are not allowed!" }));
            }

            var person = await _identityService.GetPersonByUserId(currentUser.Id);

            if (person == null)
            {
                return(BadRequest(new { error = "Person does not exist for this user" }));
            }

            if (!ModelState.IsValid)
            {
                return(NotFound());
            }

            if (model == null)
            {
                return(NotFound());
            }

            var ticket = await _ticketService.GetTicketById(model.TicketId);

            if (ticket == null)
            {
                return(BadRequest(new { error = "Selected ticket was not found" }));
            }

            if (ticket.Remaining <= 0 || ticket.Remaining - model.NrOfBought < 0)
            {
                return(BadRequest(new { error = $"There aren't so many tickets available. There are only {ticket.Remaining} more!" }));
            }

            if (model.NrOfBought <= 0)
            {
                return(BadRequest(new { error = "Number of bought tickets must be higher than 0" }));
            }

            var existingLink = await _personXTicketService.ExistingPersonXTicket(model.PersonId, model.TicketId);

            ticket.Remaining -= model.NrOfBought;

            if (existingLink != null)
            {
                existingLink.NrOfBought += model.NrOfBought;
                await _personXTicketService.UpdatePersonXTicket(existingLink, ticket);
            }
            else
            {
                var personXTicket = new PersonXTicket()
                {
                    TicketId     = model.TicketId,
                    NrOfBought   = model.NrOfBought,
                    NrOfReturned = 0,
                    PersonId     = person.Id
                };

                await _personXTicketService.CreatePersonXTicket(personXTicket, ticket);
            }

            return(Ok());
        }