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); }
public static ApiResult NotExist(this RecallOrder model) => ActionStatusMessage.ApplyMessage.RecallMessage.NotExist;