public ApiResponse <ExpenseMainModel> AddExpense(ApplyExpenseModel model) { // 1. 检查输入参数 if (model == null) { throw new ApiBadRequestException("无效的参数"); } // 2. 构造报销申请模型记录 var expenseMainDataModel = new ExpenseMainModel() { DeptNo = model.DeptNo, ProjNo = model.ProjNo, Amount = model.Amount, Reason = model.Reason, ApplyUserId = this.Member.Id, CreatedTime = DateTime.Now }; //3 构造请假单详情 expenseMainDataModel.ExpenseDetails = new List <ExpenseDetailModel>(); if (model.ExpenseDetails != null && (model.ExpenseDetails.Count > 0)) { foreach (ApplyExpenseDetailModel item in model.ExpenseDetails) { var expenseDetailModel = new ExpenseDetailModel() { ODate = item.ODate, EType = item.EType, Remark = item.Remark, PCount = 1, Amount = item.Amount }; //3.1 构造参与人员 List <ExpenseMemberModel> activyParticipants = new List <ExpenseMemberModel>(); if (item.participants != null && (item.participants.Length > 0)) { foreach (int participantItem in item.participants) { var expenseMemberModel = new ExpenseMemberModel() { MemberId = participantItem }; activyParticipants.Add(expenseMemberModel); } } expenseDetailModel.ExpenseMembers = activyParticipants; expenseMainDataModel.ExpenseDetails.Add(expenseDetailModel); } } //新增假单 如果是请假或者提交加班申请需要启动工作申请流程 // 3. Construct API Response var response = new ApiResponse <ExpenseMainModel>() { Result = ExpenseService.AddExpense(expenseMainDataModel) }; return(response); }
/// <summary> /// 添加报销申请单 /// </summary> /// <param name="model">报销单</param> /// <returns>报销申请</returns> public ExpenseMainModel AddExpense(ExpenseMainModel model) { using (var dbContext = new MissionskyOAEntities()) { model = InitExpenseAudit(model); ExpenseMain expenseMainEntity = model.ToEntity(); dbContext.ExpenseMains.Add(expenseMainEntity); dbContext.SaveChanges(); return(expenseMainEntity.ToModel()); } }
public static ExpenseMainModel ToModel(this ExpenseMain entity) { var model = new ExpenseMainModel() { Id = entity.Id, AuditId = entity.AuditId, DeptNo = entity.DeptNo, ProjNo = entity.ProjNo, Amount = entity.Amount, Reason = entity.Reason, PrintForm = entity.PrintForm.HasValue ? entity.PrintForm.Value : 0, ConfirmForm = entity.ConfirmForm.HasValue ? entity.ConfirmForm.Value : false, CreatedTime = entity.CreatedTime, ApplyUserId = entity.ApplyUserId, }; if (entity.Department == null) { model.Department = null; } else { model.Department = entity.Department.ToModel(); } if (entity.Project == null) { model.Project = null; } else { model.Project = entity.Project.ToModel(); } using (var dbContext = new MissionskyOAEntities()) { //Get english name var userEntity = dbContext.Users.FirstOrDefault(it => it.Id == entity.ApplyUserId); if (userEntity != null) { model.ApplyUserName = userEntity.EnglishName; } } return(model); }
/// <summary> /// 初始化审批状态 /// </summary> public ExpenseMainModel InitExpenseAudit(ExpenseMainModel model) { //2.1 构造审批历史 model.ExpenseAuditHistories = new List <ExpenseAuditHistoryModel>(); ExpenseAuditHistoryModel auditHistoryModel = new ExpenseAuditHistoryModel(); using (var dbContext = new MissionskyOAEntities()) { var financialUserEntity = dbContext.Users.FirstOrDefault(it => it.Email != null && it.Email.ToLower().Contains(Global.FinancialEmail)); //国内 if (model.DeptNo == 1) { var inlandHeaderUserEntity = dbContext.Users.FirstOrDefault(it => it.Email != null && it.Email.ToLower().Contains(Global.InlandHeaderEmail)); if (inlandHeaderUserEntity != null) { auditHistoryModel.CurrentAudit = inlandHeaderUserEntity.Id; auditHistoryModel.NextAudit = financialUserEntity.Id; auditHistoryModel.Status = OrderStatus.Apply; auditHistoryModel.CreatedTime = DateTime.Now; } } else { var overseaHeaderUserEntity = dbContext.Users.FirstOrDefault(it => it.Email != null && it.Email.ToLower().Contains(Global.OverseaHeaderEmail)); if (overseaHeaderUserEntity != null) { auditHistoryModel.CurrentAudit = overseaHeaderUserEntity.Id; auditHistoryModel.NextAudit = financialUserEntity.Id; auditHistoryModel.Status = OrderStatus.Apply; auditHistoryModel.CreatedTime = DateTime.Now; } } model.AuditId = (int)ExpenseAuditStep.DepartmentAudit; model.ExpenseAuditHistories.Add(auditHistoryModel); return(model); } }
public static ExpenseMain ToEntity(this ExpenseMainModel model) { var entity = new ExpenseMain() { AuditId = model.AuditId, DeptNo = model.DeptNo, ProjNo = model.ProjNo, Amount = model.Amount, Reason = model.Reason, ApplyUserId = model.ApplyUserId, PrintForm = model.PrintForm, ConfirmForm = model.ConfirmForm, CreatedTime = DateTime.Now }; Collection <ExpenseDetail> expenseDetailsResult = new Collection <ExpenseDetail>(); if (model.ExpenseDetails != null && model.ExpenseDetails.Count > 0) { foreach (ExpenseDetailModel item in model.ExpenseDetails) { expenseDetailsResult.Add(item.ToEntity()); } } entity.ExpenseDetails = expenseDetailsResult; Collection <ExpenseAuditHistory> AuditHistoriesResult = new Collection <ExpenseAuditHistory>(); if (model.ExpenseAuditHistories != null && model.ExpenseAuditHistories.Count > 0) { foreach (ExpenseAuditHistoryModel item in model.ExpenseAuditHistories) { AuditHistoriesResult.Add(item.ToEntity()); } } entity.ExpenseAuditHistories = AuditHistoriesResult; return(entity); }
public static ExpenseMainModel ToModelWithAuditHistory(this ExpenseMain entity) { var model = new ExpenseMainModel() { Id = entity.Id, AuditId = entity.AuditId, DeptNo = entity.DeptNo, ProjNo = entity.ProjNo, Amount = entity.Amount, Reason = entity.Reason, CreatedTime = entity.CreatedTime, ApplyUserId = entity.ApplyUserId, PrintForm = entity.PrintForm.HasValue ? entity.PrintForm.Value : 0, ConfirmForm = entity.ConfirmForm.HasValue ? entity.ConfirmForm.Value : false }; if (entity.Department == null) { model.Department = null; } else { model.Department = entity.Department.ToModel(); } if (entity.Project == null) { model.Project = null; } else { model.Project = entity.Project.ToModel(); } using (var dbContext = new MissionskyOAEntities()) { //Get english name var userEntity = dbContext.Users.FirstOrDefault(it => it.Id == entity.ApplyUserId); if (userEntity != null) { model.ApplyUserName = userEntity.EnglishName; } } //set current status using (var dbContext = new MissionskyOAEntities()) { var financialUserEntity = dbContext.Users.FirstOrDefault( it => it.Email != null && it.Email.ToLower().Contains(Global.FinancialEmail)); var expenseHistory = (entity.AuditId == (int)ExpenseAuditStep.FinacialAudit) ? dbContext.ExpenseAuditHistories.FirstOrDefault(it => it.ExpenseId == entity.Id && it.CurrentAudit == financialUserEntity.Id) : dbContext.ExpenseAuditHistories.FirstOrDefault(it => it.ExpenseId == entity.Id); model.currentAuditStatus = expenseHistory == null ? null : expenseHistory.ToModel(); } List <ExpenseAuditHistoryModel> AuditHistoriesResult = new List <ExpenseAuditHistoryModel>(); if (entity.ExpenseAuditHistories != null && entity.ExpenseAuditHistories.Count > 0) { foreach (ExpenseAuditHistory item in entity.ExpenseAuditHistories) { if (item.Status != (int)OrderStatus.Approving && item.Status != (int)OrderStatus.Apply) { AuditHistoriesResult.Add(item.ToModel()); } } } model.ExpenseAuditHistories = AuditHistoriesResult; return(model); }