コード例 #1
0
        public IHttpActionResult GetResidentByReferenceId(string referenceId)
        {
            if (string.IsNullOrEmpty(referenceId))
            {
                throw new ArgumentNullException(nameof(referenceId));
            }

            var loggedInUser = HttpContext.Current.User as SecurityPrincipal;

            logger.Info($"Enquiry requested by {loggedInUser.ForeName}");

            var resident = _residentService.GetResident(new Guid(referenceId));

            if (resident == null)
            {
                logger.Warn($"No resident found for {referenceId}");
                return(NotFound());
            }
            var result = resident.ToResidentResponseType();

            return(Ok(result));
        }
コード例 #2
0
        public IHttpActionResult Get(int residentID)
        {
            var response = service.GetResident(residentID);

            return(Ok(response));
        }
コード例 #3
0
        public BaseResponse <ServiceOrderModel> OrderSettlement(int serviceOrderID, string payment)
        {
            var response = new BaseResponse <ServiceOrderModel>();

            var serviceOrderRepository        = unitOfWork.GetRepository <DC_ServiceOrder>();
            var feeDetailRepository           = unitOfWork.GetRepository <DC_FeeDetail>();
            var taskRepository                = unitOfWork.GetRepository <DC_Task>();
            var depositRepository             = unitOfWork.GetRepository <DC_Deposit>();
            var serviceItemRepository         = unitOfWork.GetRepository <DC_ServiceItem>();
            var serviceItemCategoryRepository = unitOfWork.GetRepository <DC_ServiceItemCategory>();
            var serOrdSerItRepository         = unitOfWork.GetRepository <DC_SerOrdSerIt>();
            var orderCItemRepository          = unitOfWork.GetRepository <DC_OrderCItem>();
            var empRepository = unitOfWork.GetRepository <ORG_Employee>();

            var serviceOrder = serviceOrderRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == serviceOrderID);

            unitOfWork.BeginTransaction();
            if (serviceOrder == null)
            {
                response.IsSuccess     = false;
                response.ResultMessage = "该订单不存在";
                return(response);
            }
            else
            {
                serviceOrder.Payment = payment;
            }

            //支付结果
            IResidentService residentService = IOCContainer.Instance.Resolve <IResidentService>();
            var resident = residentService.GetResident(serviceOrder.ResidentID);

            //如果是会员卡支付,则校验会员卡余额
            var deposit = depositRepository.dbSet.FirstOrDefault(it => it.ResidentID == serviceOrder.ResidentID);

            if (serviceOrder.Price > 0 && serviceOrder.OrderType != Enum.GetName(typeof(OrderType), OrderType.Group) && payment == Enum.GetName(typeof(Payment), Payment.ResidentCard))
            {
                if (deposit != null)
                {
                    var remainingMoney = deposit.Amount - deposit.TotalConSpeMonth;
                    //支付成功
                    if (serviceOrder.Price <= remainingMoney)
                    {
                        deposit.TotalConSpeMonth = deposit.TotalConSpeMonth + serviceOrder.Price.Value;
                        depositRepository.Update(deposit);

                        var feeDetail = new DC_FeeDetail();
                        feeDetail.FeeNo          = base.GenerateCode(EnumCodeKey.FeeDetailCode, EnumCodeRule.YearMonthDay, "F", 6, resident.Data.OrganizationID);
                        feeDetail.ServiceOrderID = serviceOrder.ServiceOrderID;
                        feeDetail.FeeName        = serviceOrder.OrderTitle;
                        feeDetail.TotalPrice     = -1 * serviceOrder.Price;
                        feeDetail.FeeDate        = DateTime.Now;
                        feeDetail.ResidentID     = serviceOrder.ResidentID;
                        feeDetailRepository.Insert(feeDetail);
                    }
                    else
                    {
                        response.IsSuccess = false;
                    }
                }
                else
                {
                    response.IsSuccess = false;
                }

                if (!response.IsSuccess)
                {
                    response.ResultMessage = "账户期初余额不足,请充值后再下单,或选择其他支付方式下单。";
                    return(response);
                }
            }

            serviceOrder.PaymentStatus = serviceOrder.Payment == Enum.GetName(typeof(Payment), Payment.Cash) ? Enum.GetName(typeof(PaymentStatus), PaymentStatus.Unpaid) : Enum.GetName(typeof(PaymentStatus), PaymentStatus.Paid);

            serviceOrder.OrderStatus = Enum.GetName(typeof(OrderStatus), serviceOrder.SelEmployeeID.HasValue ? OrderStatus.Delivered : OrderStatus.Undelivered);


            //送货上门的情况下生成工单
            if (serviceOrder.OrderType == Enum.GetName(typeof(OrderType), OrderType.Commodity) && serviceOrder.Delivery == Enum.GetName(typeof(Delivery), Delivery.SelfPickup))
            {
                serviceOrder.OrderStatus = Enum.GetName(typeof(OrderStatus), OrderStatus.Delivered);
            }
            else
            {
                var task = taskRepository.dbSet.FirstOrDefault((q) => q.ServiceOrderID == serviceOrder.ServiceOrderID);
                if (task == null)
                {
                    task = new DC_Task();
                    task.OrganizationID  = resident.Data.OrganizationID;
                    task.TaskNo          = base.GenerateCode(EnumCodeKey.TaskCode, EnumCodeRule.YearMonthDay, "T", 4, task.OrganizationID);
                    task.ServiceOrderID  = serviceOrder.ServiceOrderID;
                    task.SONo            = serviceOrder.SONo;
                    task.Price           = serviceOrder.Price.Value;
                    task.AppointmentTime = serviceOrder.Otime;
                    task.Address         = serviceOrder.ServiceAddress;
                    task.Lng             = serviceOrder.Lng;
                    task.Lat             = serviceOrder.Lat;
                    task.Remark          = serviceOrder.Remark;
                    task.ServiceType     = serviceOrder.OrderType;
                    task.ServiceName     = serviceOrder.OrderTitle;
                    task.PersonID        = resident.Data.PersonID;
                    task.PersonName      = resident.Data.PersonName;
                    task.Sex             = resident.Data.Sex;
                    task.Phone           = serviceOrder.ContactPhone;
                    task.Status          = Enum.GetName(typeof(TaskStatus), TaskStatus.Wait);
                    if (serviceOrder.SelEmployeeID.HasValue)
                    {
                        var emp = empRepository.Get(serviceOrder.SelEmployeeID.Value);
                        task.Status       = Enum.GetName(typeof(TaskStatus), TaskStatus.Assign);
                        task.EmployeeId   = serviceOrder.SelEmployeeID.Value;
                        task.EmployeeName = emp.EmpName;
                    }
                    task.CreatedBy    = 0;
                    task.CreatedTime  = DateTime.Now;
                    task.ModifiedTime = DateTime.Now;
                    taskRepository.Insert(task);
                }
                else
                {
                    task.Price           = serviceOrder.Price;
                    task.AppointmentTime = serviceOrder.Otime;
                    task.Address         = serviceOrder.ServiceAddress;
                    task.Lng             = serviceOrder.Lng;
                    task.Lat             = serviceOrder.Lat;
                    task.Remark          = serviceOrder.Remark;
                    task.Phone           = serviceOrder.ContactPhone;
                    task.ModifiedBy      = 0;
                    task.ModifiedTime    = DateTime.Now;
                    taskRepository.Update(task);
                }
            }

            serviceOrder.ModifiedTime = DateTime.Now;
            serviceOrderRepository.Update(serviceOrder);

            response.Data = Mapper.DynamicMap <ServiceOrderModel>(serviceOrder);
            unitOfWork.Commit();
            return(response);
        }