Example #1
0
        public async Task <TicketBlModelResponse> CreateTicket(TicketBlModelRequest ticket)
        {
            TicketDalDtoModelRequest ticketRequest = new TicketDalDtoModelRequest
                                                     (
                ticket.UserId,
                ticket.PriceId
                                                     );

            CreateTicketResponseBlModel response = Mapper.Map <CreateTicketResponseBlModel>(await _ticketsRepository.CreateTicket(ticketRequest));

            if (response.Result == StoredProcedureExecutionResult.Ok)
            {
                if (ticket.Services != null)
                {
                    foreach (ServiceBlModelRequestForTicket service in ticket.Services)
                    {
                        _ticketsRepository.AddServiceToTicket(new ServiceDalDtoModelRequestForTicket(response.TicketId, service.Id, service.Amount));
                    }
                }
                return(await GetTicketById(response.TicketId));
            }
            else
            {
                return(null);
            }
        }
        public async Task <CreateTicketResponseDalDtoModel> CreateTicket(TicketDalDtoModelRequest ticket)
        {
            try
            {
                using (SqlConnection connection = new SqlConnection(_settings.ConnectionString))
                {
                    int id = await connection.ExecuteScalarAsync <int>(
                        "AddOrUpdateTicket",
                        new
                    {
                        UserId       = ticket.UserId,
                        PriceId      = ticket.PriceId,
                        TicketStatus = TicketStatus.InProcess.ToString()
                    },
                        commandType : CommandType.StoredProcedure);

                    return(new CreateTicketResponseDalDtoModel(StoredProcedureExecutionResult.Ok, id));
                }
            }
            catch (SqlException e) when(e.Number == 2627)  // Unique key violation
            {
                return(new CreateTicketResponseDalDtoModel(StoredProcedureExecutionResult.UniqueKeyViolation, 0));
            }
        }