protected override async Task <ICommandResult> Handle(CreateOrderCommand command) { CreateOrderCommandResult commandResults = new CreateOrderCommandResult(); var user = _userRepository.GetByAltId(command.UserAltId); var eventTicketAttributeIds = command.EventTicketAttributeList.Select(s => s.Id).Distinct(); var eventTicketAttributes = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventTicketAttribute> >(_eventTicketAttributeRepository.GetByIds(eventTicketAttributeIds)); var allEventTicketDetails = AutoMapper.Mapper.Map <IEnumerable <Contracts.Models.EventTicketDetail> >(_eventTicketDetailRepository.GetByIds(eventTicketAttributes.Select(s => s.EventTicketDetailId))).ToList(); var tiqetEventDetail = _tiqetEventDetailMappingRepository.GetByEventDetailId(allEventTicketDetails[0].EventDetailId); CreateOrderRequestModel requestModel = new CreateOrderRequestModel(); CustomerDetails customerDetail = new CustomerDetails(); List <Variants> variants = new List <Variants>(); foreach (var ticketAttributes in command.EventTicketAttributeList) { var eventTicketAttribute = eventTicketAttributes.Where(w => w.Id == ticketAttributes.Id).FirstOrDefault(); var eventTicketDetail = allEventTicketDetails.Where(w => w.Id == eventTicketAttribute.EventTicketDetailId).FirstOrDefault();; var tiqetEventTicketDetail = _tiqetEventTicketDetailMappingRepository.GetByEventTicketDetailId(eventTicketDetail.Id); var tiqetVariant = _tiqetVariantDetailRepository.Get(tiqetEventTicketDetail.TiqetVariantDetailId); Variants variant = new Variants(); variant.variant_id = Convert.ToInt32(tiqetVariant.VariantId); variant.count = ticketAttributes.TotalTickets; variants.Add(variant); } var item = command.EventTicketAttributeList[0]; requestModel.product_id = Convert.ToInt32(tiqetEventDetail.ProductId); requestModel.day = item.VisitDate.ToString("yyyy-MM-dd"); if (item.TimeSlot != null && item.TimeSlot != "") { requestModel.timeslot = item.TimeSlot; } customerDetail.email = _settings.GetConfigSetting <string>(SettingKeys.Integration.Tiqets.CustomerEmail); customerDetail.firstname = user.FirstName; customerDetail.lastname = user.LastName; customerDetail.phone = _settings.GetConfigSetting <string>(SettingKeys.Integration.Tiqets.CustomerPhone); requestModel.customer_details = customerDetail; requestModel.variants = variants; var responseData = await CreateOrderAsync(requestModel); var responseJson = Mapper <CreateOrderResponseModel> .MapFromJson(responseData); if (responseJson.success) { commandResults.Success = true; commandResults.OrderRefernceId = responseJson.order_reference_id; commandResults.PaymentToken = responseJson.payment_confirmation_token; } else { commandResults.Success = false; commandResults.OrderRefernceId = null; commandResults.PaymentToken = null; } return(commandResults); }