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