public IHttpActionResult Post(OrganizationRolePostRequest requestData) { var requestService = new Service.Utility.RequestDataHelper <OrganizationRolePostRequest>(); var response = new Infrastructure.ViewModel.Base.BaseResponse <List <OrganizationRole> >(); var checkColumnKeys = new string[3] { "token", "orgcode", "orgRoles" }; var checkDataEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys); if (checkDataEmpty == false) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; response.Success = false; return(Content(HttpStatusCode.BadRequest, response)); } var organizationRoleService = new OrganizationRoleService(); var responseData = organizationRoleService.PostByRequest(requestData); if (responseData == null) { response.Success = false; response.Message = "處理失敗"; response.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(response)); } response.Success = true; response.Message = "處理成功"; response.Data = responseData; return(Ok(response)); }
/// <summary> /// 處理多筆資料 - 新增 刪除 修改 /// </summary> /// <param name="requestData"></param> /// <returns></returns> public List <OrganizationRole> PostByRequest(OrganizationRolePostRequest requestData) { var db = _uow.DbContext; var organizationInfo = _uow.OrganizationRepo.Get(t => t.OrgCode == requestData.OrgCode).FirstOrDefault(); if (organizationInfo == null) { return(null); } var dbDatas = GetListByRequest(requestData); if (dbDatas == null) { return(null); } var insertDatas = requestData.OrgRoles.Where(t => t.Id <= 0).ToList(); foreach (var insertData in insertDatas) { insertData.OrgId = organizationInfo.Id; db.OrganizationRole.Add(insertData); } var updateDatas = requestData.OrgRoles.Where(t => t.Id > 0).ToList(); foreach (var updateData in updateDatas) { var changeData = db.OrganizationRole.Find(updateData.Id); if (changeData == null) { continue; } changeData.RoleCode = updateData.RoleCode; changeData.Name = updateData.Name; changeData.IsAdmin = updateData.IsAdmin; if (updateData.Level > 0) { changeData.Level = updateData.Level; } } var unionDatas = updateDatas.Select(t => t.Id).Union(dbDatas.Select(t => t.Id)); var deleteDatas = unionDatas.Except(updateDatas.Select(t => t.Id)); foreach (var deleteData in deleteDatas) { var removeData = db.OrganizationRole.Find(deleteData); if (removeData == null) { continue; } db.OrganizationRole.Remove(removeData); } try { _uow.SaveChanges(); db.SaveChanges(); var responseData = GetListByRequest(requestData); return(responseData); } catch (Exception ex) { return(null); throw ex; } }