/// <summary>
        /// 获得指定id的保险记录保单号
        /// </summary>
        /// <param name="insuranceOrderId"></param>
        /// <param name="recordId"></param>
        public void GetInsuranceNo(int insuranceOrderId, int recordId)
        {
            //获得保险订单
            var insruanceOrders = this._iInsuranceOrderRepository.FindAll(r => r.Id == insuranceOrderId);

            if (insruanceOrders == null)
            {
                throw new CustomException(111113, "不存在请求的记录。");
            }
            //获得保险记录
            InsuranceRecord record         = null;
            InsuranceOrder  insuranceOrder = null;

            foreach (InsuranceOrder order in insruanceOrders)
            {
                foreach (InsuranceRecord r in order.InsuranceRecords)
                {
                    if (r.Id == recordId)
                    {
                        insuranceOrder = order;
                        break;
                    }
                }
                if (insuranceOrder != null)
                {
                    break;
                }
            }
            if (insuranceOrder == null)
            {
                throw new CustomException(111114, "不存在指定的保险记录。");
            }
            else
            {
                foreach (InsuranceRecord r in insuranceOrder.InsuranceRecords)
                {
                    if (r.Id == recordId)
                    {
                        //只有手动出单状态的保单可以进行此操作
                        if (r.InsuranceStatus != EnumInsuranceStatus.Manual)
                        {
                            throw new CustomException(111115, "只有" + EnumInsuranceStatus.Manual.ToEnumDesc() + "状态的保险记录可以手动出单。");
                        }
                        string insuranceNo = this.GetInsuranceNo(r);
                        //如果获得保单号成功,则填写保单号,改变保单状态
                        if (!string.IsNullOrEmpty(insuranceNo))
                        {
                            r.InsuranceNo     = insuranceNo;
                            r.InsuranceStatus = EnumInsuranceStatus.GotInsurance;
                        }

                        break;
                    }
                }
            }
        }
Example #2
0
        public void BuyInsuranceByCashOrCredit(string OrderId, List <PassengerDto> passengerDtos, int payType, string pwd)
        {
            //构建保险订单数据结构
            var insuranceOrderBuilder = AggregationFactory.CreateBuiler <InsuranceOrderBuilder>();
            var insuranceOrder        = insuranceOrderBuilder.CreateInsuranceOrder();

            insuranceOrder.OrderId          = OrderId;
            insuranceOrder.InsuranceRecords = new List <InsuranceRecord>();

            var order = this._iOrderRepository.FindAll(p => p.OrderId == OrderId).FirstOrDefault();

            //填写Passenger信息
            foreach (var passer in order.Passengers)
            {
                foreach (var passengerDto in passengerDtos)
                {
                    if (passengerDto.Id == passer.Id)
                    {
                        passer.PassengerType = passengerDto.PassengerType;
                        passer.SexType       = passengerDto.SexType;
                        passer.Birth         = passengerDto.Birth;
                        passer.IdType        = passengerDto.IdType;
                        passer.CardNo        = passengerDto.CardNo;
                    }
                }
            }

            //转换请求数据结构
            InsuranceRecordBuilder insuranceRecordBuilder = new InsuranceRecordBuilder();

            foreach (var passer in passengerDtos)
            {
                foreach (var skyway in passer.SkyWays)
                {
                    if (skyway.InsuranceCount > 0)
                    {
                        InsuranceRecord record = insuranceRecordBuilder.CreateInsuranceRecord();
                        record.Count       = skyway.InsuranceCount;
                        record.SkyWayId    = skyway.SkyWayId;
                        record.PassengerId = passer.Id;
                        insuranceOrder.InsuranceRecords.Add(record);
                    }
                }
            }
            //如果没有需要申请的保险,则终止请求
            if (insuranceOrder.InsuranceRecords.Count == 0)
            {
                return;
            }

            var insuranceDomainService = ObjectFactory.GetInstance <InsuranceDomainService>();

            insuranceDomainService.SaveInsurance(insuranceOrder, AuthManager.GetCurrentUser(), true);

            this.unitOfWork.Commit();
        }
Example #3
0
        public void BuyInsuranceManually(RequestBuyInsuranceManually request)
        {
            if (request == null)
            {
                throw new CustomException(10004, "请求不可为空。");
            }
            //构建保险订单数据结构
            var insuranceOrderBuilder = AggregationFactory.CreateBuiler <InsuranceOrderBuilder>();
            var insuranceOrder        = insuranceOrderBuilder.CreateInsuranceOrder();

            insuranceOrder.InsuranceRecords = new List <InsuranceRecord>();
            //转换请求数据结构
            InsuranceRecordBuilder insuranceRecordBuilder = new InsuranceRecordBuilder();
            InsuranceRecord        record = insuranceRecordBuilder.CreateInsuranceRecord();

            record.Count        = request.Count;
            record.FlightNumber = request.FlightNumber;
            record.IdType       = request.IdType;
            if (record.IdType == EnumIDType.BirthDate &&
                request.Birth != null)
            {
                record.CardNo = request.Birth.Value.ToString("yyyy-MM-dd");
            }
            else
            {
                record.CardNo = request.CardNo;
            }
            record.InsuranceLimitEndTime   = request.InsuranceLimitEndTime;
            record.InsuranceLimitStartTime = request.InsuranceLimitStartTime;
            record.InsuredName             = request.InsuredName;
            record.Mobile        = request.Mobile;
            record.PNR           = request.PNR;
            record.SexType       = request.SexType;
            record.ToCityName    = request.ToCityName;
            record.InsureType    = EnumInsureMethod.Manually;
            record.PassengerType = request.PassengerType;
            record.Birth         = request.Birth;
            record.StartDateTime = request.StartDateTime;

            insuranceOrder.InsuranceRecords.Add(record);

            //如果没有需要申请的保险,则终止请求
            if (insuranceOrder.InsuranceRecords.Count == 0)
            {
                return;
            }

            var insuranceDomainService = ObjectFactory.GetInstance <InsuranceDomainService>();

            insuranceDomainService.SaveInsurance(insuranceOrder, AuthManager.GetCurrentUser(), true, false);

            this.unitOfWork.Commit();
            //根据request创建保险记录
        }
 private static void Display(InsuranceRecord record, int indent)
 {
     DisplayLabel("Record", indent);
     DisplayValue("Coverage Type", record.coverageType, indent + 1);
     DisplayValue("BIPD Class", record.bipdClass, record.bipdClassSpecified, indent + 1);
     DisplayValue("Form code", record.formCode, indent + 1);
     DisplayValue("Policy number", record.policyNumber, indent + 1);
     DisplayValue("Coverage from", record.coverageFrom, indent + 1);
     DisplayValue("Coverage to", record.coverageTo, indent + 1);
     DisplayValue("Effective date", record.effectiveDate, indent + 1);
     DisplayValue("Canceled date", record.canceledDate, record.canceledDateSpecified, indent + 1);
     Display(record.insuranceCarrier, indent + 1);
 }
        private string GetInsuranceNo(InsuranceRecord insurance)
        {
            if (!insurance.InsuranceLimitStartTime.HasValue || !insurance.InsuranceLimitEndTime.HasValue)
            {
                throw new CustomException(10002, "保险期限时间不能够为空");
            }
            string insuranceNo = "";

            try
            {
                //DateTime? birth = null;
                string cardno = insurance.CardNo;
                if (insurance.IdType == EnumIDType.BirthDate)
                {
                    //birth = Convert.ToDateTime(cardno);
                    cardno = "";
                }
                //如果返回-1,则为获取失败
                insuranceNo = InsurancePlatformDomainService.Buy_Insurance(
                    insurance.SerialNum,
                    insurance.InsuranceLimitStartTime.Value,
                    insurance.InsuranceLimitEndTime.Value,
                    insurance.InsuredName,
                    insurance.IdType,
                    cardno,
                    insurance.SexType,
                    insurance.Birth,
                    insurance.Mobile,
                    insurance.Count,
                    insurance.FlightNumber,
                    insurance.StartDateTime,
                    insurance.ToCityName
                    );
                if (insuranceNo == "-1")
                {
                    new CommLog().WriteLog("GetInsuranceNo", "保单号获取失败,编号" + insurance.Id);
                    insuranceNo = "";
                }
            }
            catch (Exception ex)
            {
                insuranceNo = "";
                new CommLog().WriteLog("GetInsuranceNo", "保单号获取失败,编号" + insurance.Id + "\n" + ex.StackTrace + ex.Message);
            }
            //如果出现异常,则直接将异常写入日志
            return(insuranceNo);
        }
Example #6
0
        public void SaveInsurance(RequestInsurance req)
        {
            //request不能为空
            if (req == null)
            {
                throw new CustomException(111113, "传入保单信息为空");
            }

            //构建保险订单数据结构
            var insuranceOrderBuilder = AggregationFactory.CreateBuiler <InsuranceOrderBuilder>();
            var insuranceOrder        = insuranceOrderBuilder.CreateInsuranceOrder();

            insuranceOrder.OrderId          = req.OrderId;
            insuranceOrder.InsuranceRecords = new List <InsuranceRecord>();
            var order = this._iOrderRepository.FindAll(p => p.OrderId == req.OrderId).FirstOrDefault();

            //填写Passenger信息
            foreach (var passer in order.Passengers)
            {
                foreach (var passengerDto in req.UnexpectedPassenger)
                {
                    if (passengerDto.Id == passer.Id)
                    {
                        passer.PassengerType = passengerDto.PassengerType;
                        passer.SexType       = passengerDto.SexType;
                        passer.Birth         = passengerDto.Birth;
                        passer.IdType        = passengerDto.IdType;
                        passer.CardNo        = passengerDto.CardNo;
                        //极速退处理
                        if (passengerDto.IsInsuranceRefund)
                        {
                            passer.IsInsuranceRefund    = passengerDto.IsInsuranceRefund;
                            passer.InsuranceRefunrPrice = passengerDto.InsuranceRefunrPrice;
                        }
                    }
                }
            }

            InsuranceRecordBuilder insuranceRecordBuilder = new InsuranceRecordBuilder();

            if (req.BuyInsuranceAllCount > 0)
            {
                foreach (var passer in req.UnexpectedPassenger)
                {
                    foreach (var skyway in passer.SkyWays)
                    {
                        if (skyway.InsuranceCount > 0)
                        {
                            InsuranceRecord record = insuranceRecordBuilder.CreateInsuranceRecord();
                            record.Count       = skyway.InsuranceCount;
                            record.SkyWayId    = skyway.SkyWayId;
                            record.PassengerId = passer.Id;

                            insuranceOrder.InsuranceRecords.Add(record);
                        }
                    }
                }

                if (insuranceOrder.InsuranceRecords.Count > 0)
                {
                    var insuranceDomainService = ObjectFactory.GetInstance <InsuranceDomainService>();
                    insuranceDomainService.SaveInsurance(insuranceOrder, AuthManager.GetCurrentUser());
                }
            }


            this.unitOfWork.Commit();
        }