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)); } }