Example #1
0
        public ApiResponse <OrderModel> AddOrder(ApplyOrderModel model)
        {
            // 1. 检查输入参数
            if (model == null)
            {
                throw new ApiBadRequestException("无效的参数");
            }

            // 2. 验证申请单是否有效

            /*
             * 验证不需要返回值,不符合要求弹出提示信息
             *
             *
             * **/
            ValidApplyOrder(model);

            //新增假单 如果是请假或者提交加班申请需要启动工作申请流程
            // 3. Construct API Response
            var response = new ApiResponse <OrderModel>()
            {
                Result = AskLeaveService.AddOrder(model, this.Member)
            };

            return(response);
        }
Example #2
0
        public ApiResponse <bool> UpdateOrder(int orderNo, UpdateOrderModel model)
        {
            if (orderNo < 0 || model == null)
            {
                throw new ApiBadRequestException("Bad request");
            }

            ApiResponse <bool> response = new ApiResponse <bool>()
            {
                Result = AskLeaveService.UpdateOrder(this.Member.Id, orderNo, model)
            };

            return(response);
        }
Example #3
0
        public ApiResponse <bool> Cancel(int orderNo)
        {
            //取消 如果是请假或者提交加班申请需要启动工作申请流程
            if (orderNo < 0)
            {
                throw new ApiBadRequestException("Bad request");
            }

            ApiResponse <bool> response = new ApiResponse <bool>()
            {
                Result = AskLeaveService.CancelOrder(orderNo, this.Member)
            };

            return(response);
        }
Example #4
0
        public ApiResponse <bool> Revoke(int orderNo, RevokeOrderModel model)
        {
            //销假 如果是请假或者提交加班申请需要启动工作申请流程
            if (orderNo < 0 || model == null)
            {
                throw new ApiBadRequestException("无效的参数");
            }

            if (!AskLeaveService.IsRevokeTimeAvailiable(orderNo, model))
            {
                throw new ApiBadRequestException("撤销开始时间和撤销结束时间必须在当前申请单开始时间和结束时间内");
            }

            ApiResponse <bool> response = new ApiResponse <bool>()
            {
                Result = AskLeaveService.RevokeOrder(orderNo, model, this.Member)
            };

            return(response);
        }
Example #5
0
        /// <summary>
        /// 验证申请单是否有效
        ///
        /// 这段验证在APP端提交表单到后台之前
        ///
        /// </summary>
        /// <param name="model">申请单</param>
        private void ValidApplyOrder(ApplyOrderModel model)
        {
            // 1、 验证申请人
            if (model.UserIds.Count() < 0)
            {
                Log.Error("请选择申请人。");
                throw new ApiBadRequestException("请选择申请人。");
            }

            // 2、验证申请时间

            /*
             * DateTime.Now.AddDays(-15) : 当前日期往前算15天
             * DateTime.Now.AddDays(15) : 当前日期往后算15天
             * **/
            if (DateTime.Compare(model.StartDate, DateTime.Now.AddDays(-15)) < 0)
            {
                throw new ApiBadRequestException("开始必须大于" + string.Format("{0:F}", DateTime.Now.AddDays(-15)));
            }

            if (DateTime.Compare(model.StartDate, DateTime.Now.AddDays(15)) > 0)
            {
                throw new ApiBadRequestException("开始必须小于" + string.Format("{0:F}", DateTime.Now.AddDays(15)));
            }

            if (model.StartDate >= model.EndDate)
            {
                throw new ApiBadRequestException("结束时间必须大于开始时间");
            }

            /*
             * 3、
             * 请假:
             *      开始时间必须大于等于上午8点半
             *      结束时间必须小于等于下午6点半
             *
             * 加班:
             *      开始时间必须大于上午8点半
             *
             * **/
            if (model.OrderType != OrderType.Overtime && model.OrderType != 0)
            {
                TimeSpan dspWorkingDayAM = DateTime.Parse("08:30").TimeOfDay;
                TimeSpan dspWorkingDayPM = DateTime.Parse("18:30:59").TimeOfDay;
                if (model.StartDate.TimeOfDay < dspWorkingDayAM)
                {
                    throw new ApiBadRequestException("开始时间必须大于等于上午8点半");
                }
                if (model.EndDate.TimeOfDay > dspWorkingDayPM)
                {
                    throw new ApiBadRequestException("结束时间必须小于等于下午6点半");
                }
            }
            else
            {
                // 加班 : 开始时间必须大于上午8点半
                TimeSpan dspWorkingDayAM = DateTime.Parse("08:30").TimeOfDay;
                if (model.StartDate.TimeOfDay < dspWorkingDayAM)
                {
                    throw new ApiBadRequestException("开始时间必须大于上午8点半");
                }
            }

            /*
             *  4、验证用户申请的时间段是否被占用
             *
             *  参数0:申请单提交到后台前,申请单号为0
             *
             * **/
            var invalidUsers = AskLeaveService.IsOrderTimeAvailiable(model, 0);


            if (!string.IsNullOrEmpty(invalidUsers))
            {
                throw new ApiBadRequestException(string.Format("用户({0})此申请时段已经占用。", invalidUsers));
            }
        }