private UserOPDRegister CreateOpdRegister(RequestConsultationInfoUpdateDTO model, UserOPDRegister entity, RequestConsultationDoctorDTO attendingDoctor) { if (entity == null) { entity = new UserOPDRegister(); } entity.UserID = model.CurrentOperatorUserID; entity.MemberID = model.MemberID; entity.OPDType = EnumDoctorServiceType.Consultation; entity.Fee = model.Amount; entity.CreateUserID = model.CurrentOperatorUserID; entity.OPDBeginTime = ""; entity.OPDEndTime = ""; entity.DoctorID = attendingDoctor == null ? "" : attendingDoctor.DoctorID; entity.DoctorName = attendingDoctor == null ? "" : attendingDoctor.DoctorName; entity.RegDate = model.StartTime == null ? DateTime.Now : model.StartTime.Value; entity.MemberName = model.MemberName; entity.Gender = model.Gender; entity.Marriage = model.Marriage; entity.Age = ToolHelper.GetAgeFromBirth(model.Birthday); entity.IDNumber = string.IsNullOrEmpty(model.IDNumber) ? "" : model.IDNumber; entity.IDType = model.IDType; entity.Mobile = model.Mobile; entity.Address = model.PatientAddress; entity.Birthday = model.Birthday; return(entity); }
/// <summary> /// 提交预约 /// </summary> /// <param name="request"></param> /// <param name="CheckExists">是否检查重复预约</param> /// <returns></returns> public ResponseUserOPDRegisterSubmitDTO Submit(RequestUserOPDRegisterSubmitDTO request) { #region 校验失败:重复预约 var existsOrder = new OrderRepeatReturnDTO(); if (ExistsWithSubmitRequest(request, out existsOrder)) { if (existsOrder.OrderState == EnumOrderState.NoPay) { return(new ResponseUserOPDRegisterSubmitDTO { ErrorInfo = "预约成功", ActionStatus = "Success", OPDRegisterID = existsOrder.OrderOutID, OrderNO = existsOrder.OrderNo, OrderState = existsOrder.OrderState, ChannelID = existsOrder.ChannelID }); } else { return(new ResponseUserOPDRegisterSubmitDTO { ErrorInfo = "已有未完成的预约,不能重复预约", OPDRegisterID = existsOrder.OrderOutID, OrderNO = existsOrder.OrderNo, OrderState = existsOrder.OrderState, ChannelID = existsOrder.ChannelID, ActionStatus = "Repeat" }); } } #endregion using (DAL.EF.DBEntities db = new DBEntities()) { var Reason = ""; var orderService = new OrderService(CurrentOperatorUserID); //获取服务价格 decimal ServicePrice = 0.01M; var OPDDate = DateTime.Now; var OPDBeginTime = DateTime.Now.ToString("HH:mm"); var OPDEndTime = DateTime.Now.AddMinutes(30).ToString("HH:mm"); var OrderExpireTime = DateTime.Now.AddMinutes(30); RequestUserMemberDTO member = new UserMemberService(). GetDefaultMemberInfo(request.UserID).Map <ResponseUserMemberDTO, RequestUserMemberDTO>(); #region 新增预约记录 UserOPDRegister model = new UserOPDRegister() { CreateUserID = request.UserID, OPDType = request.OPDType, MemberID = request.MemberID, Fee = ServicePrice,//服务价格 OPDRegisterID = Guid.NewGuid().ToString("N"), UserID = request.UserID, ConsultContent = string.IsNullOrEmpty(request.ConsultContent) ? "" : request.ConsultContent, }; if (member != null) { model.MemberName = member.MemberName; model.Gender = member.Gender; model.Marriage = member.Marriage; model.Age = member.Age; model.IDNumber = string.IsNullOrEmpty(member.IDNumber) ? "" : member.IDNumber; model.IDType = member.IDType; model.Mobile = member.Mobile; model.Address = member.Address; model.Birthday = member.Birthday; } db.UserOpdRegisters.Add(model); #endregion #region 添加附件 if (request.Files != null) { foreach (var file in request.Files) { db.UserFiles.Add(new UserFile() { FileID = Guid.NewGuid().ToString("N"), FileName = file.FileUrl, FileUrl = file.FileUrl, FileType = 0, Remark = file.Remark, AccessKey = "", ResourceID = "", OutID = model.OPDRegisterID, UserID = request.UserID }); } } #endregion #region 创建房间 var room = new Entity.ConversationRoom(); room.EndTime = DateTime.Parse(OPDDate.ToString("yyyy-MM-dd ") + OPDEndTime); room.BeginTime = DateTime.Parse(OPDDate.ToString("yyyy-MM-dd ") + OPDBeginTime); room.TotalTime = 0; room.RoomState = EnumRoomState.NoTreatment;//状态 room.ConversationRoomID = Guid.NewGuid().ToString("N"); room.ServiceID = model.OPDRegisterID; room.ServiceType = model.OPDType; //如果预约类型是挂号那么房间类型就是线下看诊,否则是线上看诊 room.RoomType = EnumRoomType.Group; db.Set <ConversationRoom>().Add(room); #endregion #region 创建订单 EnumProductType ProductType = EnumProductType.Other; switch (model.OPDType) { case EnumDoctorServiceType.VidServiceType: ProductType = EnumProductType.video; break; default: break; } var order = orderService.CreateOrder(new OrderDTO() { OrderType = ProductType, OrderOutID = model.OPDRegisterID, UserID = model.UserID, OrderTime = DateTime.Now, OrderExpireTime = OrderExpireTime, Details = new List <OrderDetailDTO>() { new OrderDetailDTO() { Subject = ProductType.GetEnumDescript(), Body = "", ProductId = "", ProductType = ProductType, Quantity = 1, UnitPrice = model.Fee } } }, db); #endregion if (db.SaveChanges() > 0) { //确定订单 if (orderService.Confirm(order.OrderNo, new RequestOrderConfirmDTO() { OrderNo = order.OrderOutID, }) == EnumApiStatus.BizOK) { order = orderService.GetOrder(order.OrderNo); return(new ResponseUserOPDRegisterSubmitDTO { ErrorInfo = "预约成功", ActionStatus = "Success", OPDRegisterID = model.OPDRegisterID, OrderNO = order.OrderNo, OrderState = order.OrderState, ChannelID = room.ChannelID }); } else { orderService.Cancel(order.OrderNo); } } return(new ResponseUserOPDRegisterSubmitDTO { ErrorInfo = "预约失败", ActionStatus = "Fail", }); } }
public bool AddOpdRegister(RequestUserOPDRegisterSubmitDTO request, DBEntities db = null) { bool dbPrivateFlag = false; if (db == null) { db = CreateDb(); dbPrivateFlag = true; } request.OPDRegisterID = Guid.NewGuid().ToString("N"); #region 新增预约记录 UserOPDRegister model = new UserOPDRegister() { IsUseTaskPool = request.IsUseTaskPool, CreateTime = DateTime.Now, ScheduleID = request.ScheduleID, DeleteTime = DateTime.Now, ModifyTime = DateTime.Now, IsDeleted = false, DoctorGroupID = string.IsNullOrEmpty(request.DoctorGroupID) ? "" : request.DoctorGroupID, CreateUserID = request.UserID, OrgnazitionID = request.OrgnazitionID, OPDType = request.OPDType, MemberID = request.MemberID, CostType = request.CostType, RegDate = DateTime.Now, OPDBeginTime = request.OPDBeginTime, //服务预约时间段开始 OPDEndTime = request.OPDEndTime, //服务预约时间端结束 Fee = request.ServicePrice, //服务价格 DoctorID = string.IsNullOrEmpty(request.DoctorID) ? "" : request.DoctorID, //医生编号 DoctorName = string.IsNullOrEmpty(request.DoctorName) ? "" : request.DoctorName, PhotoUrl = string.IsNullOrEmpty(request.PhotoUrl) ? "": request.PhotoUrl, RenewFee = request.RenewFee, MedicalCardNumber = request.MedicalCardID, Flag = request.Flag, DoctorPhotoUrl = string.IsNullOrEmpty(request.DoctorPhotoUrl) ? "" : request.DoctorPhotoUrl, UserAccount = request.UserAccount, OPDDate = request.OPDDate,//预约日期 OPDRegisterID = request.OPDRegisterID, UserID = request.UserID, ConsultContent = string.IsNullOrEmpty(request.ConsultContent) ? "" : request.ConsultContent, ConsultDisease = string.IsNullOrEmpty(request.ConsultDisease) ? "" : request.ConsultDisease, MemberName = request.MemberName, Gender = request.Gender, Marriage = request.Marriage, Age = request.Age, IDNumber = string.IsNullOrEmpty(request.IDNumber) ? "" : request.IDNumber, IDType = request.IDType, Mobile = request.Mobile, Address = request.Address, Birthday = request.Birthday }; db.UserOPDRegisters.Add(model); #endregion var ret = true; if (dbPrivateFlag) { db.Dispose(); ret = db.SaveChanges() > 0; } return(ret); }