Example #1
0
        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);
        }