/// <summary>
 /// 机票改签出票推送信息
 /// </summary>
 /// <returns></returns>
 private void GetFltModPrintTicketMessage(SendAppMessageModel sendAppMessageModel)
 {
     if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.FltMod &&
         sendAppMessageModel.SendType == SendAppMessageTypeEnum.PrintTicketNotice)
     {
         FltModOrderEntity fltModOrderEntity = _fltModOrderDal.Find <FltModOrderEntity>(sendAppMessageModel.OrderId);
         sendAppMessageModel.SendContent = string.Format("您的机票订单{0}已经改签出票成功,请确认", fltModOrderEntity.OrderId);
     }
 }
        public FltModOrderModel GetModOrderByRmid(int rmid)
        {
            FltModOrderEntity fltModOrder =
                _fltModOrderDal.Query <FltModOrderEntity>(n => n.RootRmid == rmid).FirstOrDefault();

            if (fltModOrder == null)
            {
                return(null);
            }
            return(Convert(fltModOrder));
        }
        public FltModOrderModel GetModOrderByModOrderId(string modOrderId)
        {
            FltModOrderEntity fltModOrder =
                _fltModOrderDal.Query <FltModOrderEntity>(n => (n.OrderId + n.NumberIdentity) == modOrderId).FirstOrDefault();

            if (fltModOrder == null)
            {
                return(null);
            }
            return(Convert(fltModOrder));
        }
        private FltModOrderModel Convert(FltModOrderEntity fltModOrder)
        {
            //改签行程
            List <FltModFlightEntity> fltModFlightEntities =
                _fltModFlightDal.Query <FltModFlightEntity>(n => n.Rmid == fltModOrder.Rmid).ToList();
            //改签乘机人
            List <FltModPassengerEntity> fltModPassengerEntities =
                _fltModPassengerDal.Query <FltModPassengerEntity>(n => n.Rmid == fltModOrder.Rmid).ToList();
            //原订单乘机人
            List <int> pidList = fltModPassengerEntities.Select(n => n.Pid).ToList();
            List <FltPassengerEntity> fltPassengerEntities =
                _fltPassengerDal.Query <FltPassengerEntity>(n => pidList.Any(x => x == n.PId)).ToList();
            //改签票号
            List <FltModTicketNoEntity> fltModTicketNoEntities =
                _fltModTicketNoDal.Query <FltModTicketNoEntity>(n => n.Rmid == fltModOrder.Rmid).ToList();
            //改签日志
            List <FltModOrderLogEntity> fltModOrderLogEntities =
                _fltModOrderLogDal.Query <FltModOrderLogEntity>(n => n.Rmid == fltModOrder.Rmid).ToList();

            List <SearchCityModel>    cityModels    = AportInfo.CountryList.SelectMany(n => n.CityList).ToList();
            List <SearchAirportModel> airportModels = cityModels.SelectMany(n => n.AirportList).ToList();


            List <FltPassengerModel> fltPassengerModels = Mapper.Map <List <FltPassengerEntity>, List <FltPassengerModel> >(fltPassengerEntities);

            FltModOrderModel fltModOrderModel = new FltModOrderModel();

            fltModOrderModel = Mapper.Map <FltModOrderEntity, FltModOrderModel>(fltModOrder);
            fltModOrderModel.FltModFlightList =
                Mapper.Map <List <FltModFlightEntity>, List <FltModFlightModel> >(fltModFlightEntities);

            fltModOrderModel.FltModFlightList.ForEach(n =>
            {
                SearchAirportModel airportModel = airportModels.Find(x => x.AirportCode.ToLower() == n.Dport.ToLower());
                if (airportModel != null)
                {
                    n.DportName = airportModel.AirportName;
                    SearchCityModel cityModel = cityModels.Find(x => x.CityCode.ToLower() == airportModel.CityCode.ToLower());
                    n.DportCity = cityModel.CityName;
                }

                SearchAirportModel airportModel2 = airportModels.Find(x => x.AirportCode.ToLower() == n.Aport.ToLower());
                if (airportModel2 != null)
                {
                    n.AportName = airportModel2.AirportName;
                    SearchCityModel cityModel2 = cityModels.Find(x => x.CityCode.ToLower() == airportModel2.CityCode.ToLower());
                    n.AportCity = cityModel2.CityName;
                }
            });

            fltModOrderModel.FltModPassengerList =
                Mapper.Map <List <FltModPassengerEntity>, List <FltModPassengerModel> >(fltModPassengerEntities);
            fltModOrderModel.FltModPassengerList.ForEach(n =>
            {
                n.Passenger = fltPassengerModels.Find(x => x.PId == n.Pid);
            });

            fltModOrderModel.FltModTicketNoList =
                Mapper.Map <List <FltModTicketNoEntity>, List <FltModTicketNoModel> >(fltModTicketNoEntities);
            fltModOrderModel.FltModOrderLogList =
                Mapper.Map <List <FltModOrderLogEntity>, List <FltModOrderLogModel> >(fltModOrderLogEntities);


            return(fltModOrderModel);
        }
        public GetAppMessageResultModel GetUnReadMessage(GetAppMessageQueryModel query)
        {
            int type = (int)SendAppMessageTypeEnum.SendRunPrintFltTicketEmail;
            GetAppMessageResultModel          resultModel = new GetAppMessageResultModel();
            IQueryable <SendAppMessageEntity> iQueryable  =
                _sendAppMessageDal.Query <SendAppMessageEntity>(
                    n =>
                    n.Cid == query.Cid && n.SendStatus == 1 && !string.IsNullOrEmpty(n.SendContent) &&
                    n.SendType != type, true);

            resultModel.TotalCount = iQueryable.Count();//查询所有结果的数量

            iQueryable =
                iQueryable.OrderBy(n => n.IsRead ?? 0).ThenByDescending(n => n.SendLastTime).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize);

            List <SendAppMessageEntity> sendAppMessageEntities = iQueryable.ToList();

            resultModel.AppMessageList =
                Mapper.Map <List <SendAppMessageEntity>, List <SendAppMessageModel> >(sendAppMessageEntities);

            if (resultModel.AppMessageList != null && resultModel.AppMessageList.Count > 0)
            {
                foreach (var sendAppMessageModel in resultModel.AppMessageList)
                {
                    if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.FltMod)
                    {
                        FltModOrderEntity fltModOrderEntity =
                            base.Context
                            .Set <FltModOrderEntity>()
                            .FirstOrDefault(n => n.Rmid == sendAppMessageModel.OrderId);
                        if (fltModOrderEntity != null && fltModOrderEntity.RootRmid.HasValue)
                        {
                            sendAppMessageModel.OrderId = fltModOrderEntity.RootRmid.Value;
                        }
                    }
                    else if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.FltRet)
                    {
                        FltRefundOrderEntity fltRefundOrderEntity =
                            base.Context
                            .Set <FltRefundOrderEntity>()
                            .FirstOrDefault(n => n.RefundId == sendAppMessageModel.OrderId);
                        if (fltRefundOrderEntity != null && fltRefundOrderEntity.Rmid.HasValue)
                        {
                            sendAppMessageModel.OrderId = fltRefundOrderEntity.Rmid.Value;
                        }
                    }
                    else if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.AduitOrder)
                    {
                        if (sendAppMessageModel.SendType == SendAppMessageTypeEnum.AuditResultNotice ||
                            sendAppMessageModel.SendType == SendAppMessageTypeEnum.AuditOrderDeleteNotice)
                        {
                            CorpAduitOrderDetailEntity corpAduitOrderDetailEntity =
                                base.Context.Set <CorpAduitOrderDetailEntity>()
                                .FirstOrDefault(n => n.AduitOrderId == sendAppMessageModel.OrderId);
                            if (corpAduitOrderDetailEntity != null)
                            {
                                sendAppMessageModel.OrderId = corpAduitOrderDetailEntity.OrderId;
                            }
                        }
                    }
                    else if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.TraRet)
                    {
                        TraOrderEntity traRetOrderEntity =
                            base.Context.Set <TraOrderEntity>()
                            .FirstOrDefault(n => n.OrderId == sendAppMessageModel.OrderId);
                        if (traRetOrderEntity != null && traRetOrderEntity.OrderRoot.HasValue)
                        {
                            sendAppMessageModel.OrderId = traRetOrderEntity.OrderRoot.Value;
                        }
                    }
                    else if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.TraMod)
                    {
                        TraModOrderEntity traModOrderEntity =
                            base.Context.Set <TraModOrderEntity>()
                            .FirstOrDefault(n => n.CorderId == sendAppMessageModel.OrderId);

                        if (traModOrderEntity != null && traModOrderEntity.OrderId.HasValue)
                        {
                            sendAppMessageModel.OrderId = traModOrderEntity.OrderId.Value;
                        }
                    }
                }
            }

            //if (query.PageIndex == 1)
            //{
            //    //获取未读信息
            //    List<SendAppMessageEntity> unReadList =
            //        _sendAppMessageDal.Query<SendAppMessageEntity>(
            //            n => n.Cid == query.Cid && n.SendStatus == 1 && (n.IsRead ?? 0) == 0, true).ToList();
            //    List<int> unReadIdList = unReadList.Select(n => n.SendId).ToList();
            //    //将未读信息设置为已读
            //    if (unReadIdList != null && unReadIdList.Count > 0)
            //    {
            //        foreach (var unReadId in unReadIdList)
            //        {
            //            _sendAppMessageDal.Update<SendAppMessageEntity>(new SendAppMessageEntity()
            //            {
            //                SendId = unReadId,
            //                IsRead = 1
            //            }, new[] {"IsRead"});
            //        }
            //    }

            //}

            return(resultModel);
        }