示例#1
0
        public RecallOrder Create(RecallOrderVDto recallOrder)
        {
            var order = new RecallOrder()
            {
                Create      = DateTime.Now,
                ReturnStamp = recallOrder.ReturnStamp,
                Reason      = recallOrder.Reason,
                HandleBy    = _context.AppUsersDb.FirstOrDefault(u => u.Id == recallOrder.HandleBy.Id)
            };
            var apply = _context.AppliesDb.Where(a => a.Id == recallOrder.Apply).FirstOrDefault();

            if (apply == null)
            {
                throw new ActionStatusMessageException(apply.NotExist());
            }
            if (apply.RecallId != null)
            {
                throw new ActionStatusMessageException(ActionStatusMessage.ApplyMessage.RecallMessage.Crash);
            }
            if (order.HandleBy == null)
            {
                throw new ActionStatusMessageException(order.HandleBy.NotExist());
            }
            if (!(apply.ApplyAllAuditStep.OrderBy(i => i.Index).LastOrDefault()?.MembersAcceptToAudit.Split("##").Contains(recallOrder.HandleBy.Id) ?? false))
            {
                throw new ActionStatusMessageException(ActionStatusMessage.ApplyMessage.RecallMessage.RecallByNotSame);
            }
            if (apply.RequestInfo.StampReturn <= order.ReturnStamp)
            {
                throw new ActionStatusMessageException(ActionStatusMessage.ApplyMessage.RecallMessage.RecallTimeLateThanVacation);
            }
            if (order.ReturnStamp < apply.RequestInfo.StampLeave)
            {
                throw new ActionStatusMessageException(ActionStatusMessage.ApplyMessage.RecallMessage.RecallTimeEarlyThanVacationLeaveStamp);
            }
            _context.RecallOrders.Add(order);
            apply.RecallId       = order.Id;
            apply.ExecuteStatus |= ExecuteStatus.BeenSet;
            apply.ExecuteStatus |= ExecuteStatus.Recall;
            _context.Applies.Update(apply);
            _context.SaveChanges();
            return(order);
        }
示例#2
0
 public static ApiResult NotExist(this RecallOrder model) => ActionStatusMessage.ApplyMessage.RecallMessage.NotExist;