public ActionResult RemoveFile(string projectGuid, List <string> fileGuids) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Write); var dmsFiles = new List <DMSFile>(); foreach (var fileGuid in fileGuids) { var dmsFile = m_dbAdapter.DMSFile.GetByGuid(fileGuid); var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetById(dmsFile.DMSFileSeriesId); var dmsFolder = m_dbAdapter.DMSFolder.GetById(dmsFileSeries.DMSFolderId); CommUtils.AssertEquals(dmsFolder.DMSId, dms.Instance.Id, "FileGuid[{0}]不在DMS[{1}]中", fileGuid, dms.Instance.Guid); CommUtils.Assert(IsCurrentUser(dmsFile.CreateUserName), "当前用户[{0}]不是[{1}]的创建者[{2}]", CurrentUserName, dmsFile.Name, dmsFile.CreateUserName); dmsFiles.Add(dmsFile); } var fileNames = new List <string>(); foreach (var dmsFile in dmsFiles) { m_dbAdapter.DMSFile.Remove(dmsFile); fileNames.Add("[" + dmsFile.Name + "]"); } // m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, "删除文件" + string.Join(",", fileNames.ToArray())); return ActionUtils.Success(dmsFiles.Count); })); }
private List <DataSeries> GetChartByDataset(string projectGuid, string paymentDay, Func <PaymentDetail, double> selector) { var project = m_dbAdapter.Project.GetProjectByGuid(projectGuid); var datasets = m_dbAdapter.Dataset.GetDatasetByProjectId(project.ProjectId); var subDatasets = datasets.Where(x => x.PaymentDate.HasValue && x.PaymentDate.Value.ToString("yyyyMMdd") == paymentDay).ToList(); CommUtils.AssertEquals(subDatasets.Count, 1, "加载Dataset (project=" + project.Name + ", paymentDay=" + paymentDay + ") 失败"); var dataset = subDatasets.Single(); var notes = m_dbAdapter.Dataset.GetNotes(project.ProjectId); var cnabsNotes = new ProjectLogicModel(CurrentUserName, project).Notes; var noteDict = Toolkit.GetNoteDictionary(project, notes, cnabsNotes); var noteInfos = notes.ConvertAll(x => noteDict[x.NoteId]); //Load dataset info var dealSchedule = NancyUtils.GetDealSchedule(project.ProjectId); var noteDatas = m_dbAdapter.Dataset.GetNoteDatas(dataset.DatasetId); var datasetViewModel = Toolkit.GetDatasetViewModel(dataset, dealSchedule.PaymentDates, noteDict, noteDatas); var dataSeriesList = new List <DataSeries>(); foreach (var noteData in datasetViewModel.NoteDatas) { var ds = new DataSeries(); ds.name = noteData.NoteInfo.Name; ds.data = new List <Vector>(); ds.data.Add(new Vector(selector(noteData.PaymentDetail))); dataSeriesList.Add(ds); } return(dataSeriesList); }
public ActionResult RemoveFileSeries(string shortCode, List <string> fileSeriesGuids) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Write); var fileSeriesList = new List <DMSFileSeries>(); foreach (var fileSeriesGuid in fileSeriesGuids) { var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid); var dmsFolder = m_dbAdapter.DMSFolder.GetById(dmsFileSeries.DMSFolderId); CommUtils.AssertEquals(dmsFolder.DMSId, dms.Instance.Id, "fileSeriesGuid[{0}]不在DMS[{1}]中", fileSeriesGuid, dms.Instance.Guid); CommUtils.Assert(IsCurrentUser(dmsFileSeries.CreateUserName), "当前用户[{0}]不是[{1}]的创建者[{2}]", CurrentUserName, dmsFileSeries.Name, dmsFileSeries.CreateUserName); fileSeriesList.Add(dmsFileSeries); } var result = m_dbAdapter.DMSFileSeries.Remove(fileSeriesList); var fileSeriesNamesArray = fileSeriesList.ConvertAll(x => "[" + x.Name + "]").ToArray(); m_dbAdapter.Task.AddTaskLog(shortCode, "删除文件" + string.Join(",", fileSeriesNamesArray)); return ActionUtils.Success(result); })); }
public ActionResult RemoveFileSeries(string projectGuid, List <string> fileSeriesGuids) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Write); var fileSeriesList = new List <DMSFileSeries>(); foreach (var fileSeriesGuid in fileSeriesGuids) { var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid); var dmsFolder = m_dbAdapter.DMSFolder.GetById(dmsFileSeries.DMSFolderId); CommUtils.AssertEquals(dmsFolder.DMSId, dms.Instance.Id, "fileSeriesGuid[{0}]不在DMS[{1}]中", fileSeriesGuid, dms.Instance.Guid); CommUtils.Assert(IsCurrentUser(dmsFileSeries.CreateUserName), "当前用户[{0}]不是[{1}]的创建者[{2}]", CurrentUserName, dmsFileSeries.Name, dmsFileSeries.CreateUserName); fileSeriesList.Add(dmsFileSeries); m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, "删除文件" + fileSeriesGuid); } var result = m_dbAdapter.DMSFileSeries.Remove(fileSeriesList); return ActionUtils.Success(result); })); }
public ActionResult DeleteExtensionCheckItem(string shortCode, string checkItemName, string groupName) { return(ActionUtils.Json(() => { CheckPermission(PermissionObjectType.Task, shortCode, PermissionType.Write); var task = m_dbAdapter.Task.GetTaskWithExInfo(shortCode); var taskExInfo = task.TaskExtension.TaskExtensionInfo; if (taskExInfo != null) { var taskExCheckListInfo = CommUtils.FromJson <TaskExCheckListInfo>(taskExInfo); foreach (var checkItemGroup in taskExCheckListInfo.CheckGroups) { if (checkItemGroup.GroupName == groupName) { CommUtils.AssertEquals(checkItemGroup.CheckItems.Count(x => x.Name == checkItemName), 1, "工作[" + task + "]检查项分组[" + checkItemGroup.GroupName + "]下的[" + checkItemName + "]项有误,请刷新后重试"); checkItemGroup.CheckItems.RemoveAll(x => x.Name == checkItemName); } } task.TaskExtension.TaskExtensionInfo = CommUtils.ToJson(taskExCheckListInfo); } task.TaskHandler = CurrentUserName; m_dbAdapter.Task.UpdateTaskExtension(task.TaskExtension); m_dbAdapter.Task.UpdateTask(task); m_dbAdapter.Project.NewEditProductLog(EditProductType.EditTask, task.ProjectId, "更新Task[" + task.Description + "(" + task.ShortCode + ")]," + "删除扩展工作检查项分组[" + groupName + "]下的检查项[" + checkItemName + "]", ""); var comment = "删除分组[" + groupName + "]中的工作要点[" + checkItemName + "]"; m_dbAdapter.Task.AddTaskLog(task, comment); return ActionUtils.Success(""); })); }
public async Task <JsonResult> CreateUser(UserViewModel vuser) { CommUtils.AssertEquals(vuser.RepeatPassword, vuser.Password, "两次输入密码不一致"); CommUtils.Assert(vuser.Password.Length >= 6, "密码最小长度为六位"); CommUtils.Assert(UserService.GetUserByName(vuser.UserName) == null, "用户[{0}]已存在", vuser.UserName); AppUser user = new AppUser() { UserName = vuser.UserName, PasswordHash = new PasswordHasher().HashPassword(vuser.Password), Email = vuser.Email, NickName = vuser.NickName, PhoneNumber = vuser.PhoneNumber, IsActive = true, SecurityStamp = Guid.NewGuid().ToString(), }; await UserService.CreateAsync(user); user = UserService.GetUserByName(vuser.UserName); foreach (var item in vuser.Roles) { await UserService.AddToRoleAsync(user, item); } return(Json(new JsonResultDataEntity <string>() { Code = 0 })); }
public AssetLogicModel GetAssetById(int assetId) { CommUtils.AssertEquals(Assets.Count(x => x.AssetId == assetId), 1, "查找assetId={0}失败,产品[{1}],偿付期[{2}]", ProjectLogicModel.Instance.Name, Instance.PaymentDate.Value); return(Assets.Single(x => x.AssetId == assetId)); }
public ActionResult UploadFile(string shortCode, string fileSeriesGuid, string description) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Execute); var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid); var dmsFolder = m_dbAdapter.DMSFolder.GetById(dmsFileSeries.DMSFolderId); CommUtils.AssertEquals(dms.Instance.Id, dmsFolder.DMSId, "文件[fileSeriesGuid={0}]不在DMS[DMSGuid={1}]中,请刷新后再试", fileSeriesGuid, dms.Instance.Guid); var files = Request.Files; CommUtils.Assert(files.Count > 0, "请选择上传文件"); CommUtils.AssertEquals(files.Count, 1, "只能上传一个文件"); var file = files[0]; var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/')); var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1); CommUtils.Assert(file.ContentLength > 0, "上传文件不能为空"); CommUtils.AssertHasContent(fileName, "文件名不能为空"); CommUtils.Assert(fileName.Length <= 100, "文件名不能超过100个字符数"); var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength)); var repoFile = Platform.Repository.AddFile(fileName, memoryStream); var allFiles = m_dbAdapter.DMSFile.GetFilesByFileSeriesId(dmsFileSeries.Id); var currentVer = allFiles.Count == 0?0: allFiles.Max(x => x.Version); DMSFile newDMSFile = new DMSFile(); newDMSFile.DMSId = dms.Instance.Id; newDMSFile.DMSFileSeriesId = dmsFileSeries.Id; newDMSFile.RepoFileId = repoFile.Id; newDMSFile.Name = repoFile.Name; newDMSFile.Description = description ?? string.Empty; newDMSFile.Size = file.ContentLength; newDMSFile.Version = currentVer + 1; var now = DateTime.Now; newDMSFile.LastModifyUserName = CurrentUserName; newDMSFile.LastModifyTime = now; newDMSFile.CreateUserName = CurrentUserName; newDMSFile.CreateTime = now; newDMSFile = m_dbAdapter.DMSFile.Create(newDMSFile); var task = m_dbAdapter.Task.GetTask(shortCode); new TaskLogicModel(dms.ProjectLogicModel, task).Start(); var comment = "文件夹[" + dmsFolder.Name + "]中上传文件[" + dmsFileSeries.Name + "]的第" + newDMSFile.Version + "版本"; m_dbAdapter.Task.AddTaskLog(task, comment); return ActionUtils.Success(newDMSFile.Guid); })); }
public int DeleteAgenda(Agenda agenda) { agenda.RecordStatus = RecordStatus.Deleted; var count = UpdateAgenda(agenda); CommUtils.AssertEquals(count, 1, "Remove agenda failed : id={0};recordsCount={1}", agenda.Id, count); return(count); }
public TaskGroup RemoveTaskGroup(TaskGroup taskGroup) { taskGroup.RecordStatus = RecordStatus.Deleted; var count = UpdateTaskGroup(taskGroup); CommUtils.AssertEquals(count, 1, "Remove taskGroup failed : id={0};recordsCount={1}", taskGroup.Id, count); return(taskGroup); }
public int RemoveInvestment(Investment investment) { investment.RecordStatus = RecordStatus.Deleted; var count = UpdateInvestment(investment); CommUtils.AssertEquals(count, 1, "Remove investment failed : id={0};recordsCount={1}", investment.Id, count); return(count); }
public void Load(int projectId, DateTime asOfDate) { var project = m_dbAdapter.Project.GetProjectById(projectId); var dealSchedule = NancyUtils.GetDealSchedule(projectId, asOfDate.ToString("yyyyMMdd")); m_dealSchedule = dealSchedule; var errorMsg = "Search payment date/as of date failed, projectGuid=[" + project.ProjectGuid + "] asOfDate=[" + asOfDate.ToString() + "]"; CommUtils.Assert(dealSchedule.DeterminationDates != null && dealSchedule.DeterminationDates.Length > 0, errorMsg); CommUtils.Assert(dealSchedule.PaymentDates != null && dealSchedule.PaymentDates.Length > 0, errorMsg); CommUtils.Assert(dealSchedule.DeterminationDates.Length == dealSchedule.PaymentDates.Length, errorMsg); CommUtils.Assert(asOfDate < dealSchedule.LegalMaturity, errorMsg); var asOfDateList = dealSchedule.DeterminationDates.ToList(); asOfDateList.Insert(0, dealSchedule.FirstCollectionPeriodStartDate); asOfDateList.RemoveAt(asOfDateList.Count - 1); var paymentDateList = dealSchedule.PaymentDates.ToList(); var projectLogicModel = new ProjectLogicModel(m_userName, project); var findPaymentDates = projectLogicModel.DealSchedule.DurationPeriods .Where(x => x.Dataset != null && x.Dataset.Instance != null && DateUtils.ParseDigitDate(x.Dataset.Instance.AsOfDate) == asOfDate) .Select(x => x.Dataset.Instance.PaymentDate); CommUtils.AssertEquals(findPaymentDates.Count(), 1, "查找PaymentDay失败,AsOfDate={0}", asOfDate); m_paymentDay = findPaymentDates.Single().Value; var index = paymentDateList.IndexOf(m_paymentDay); CommUtils.Assert(index >= 0, errorMsg); m_asOfDay = asOfDate; if (index == 0) { m_previousPaymentDay = paymentDateList[0]; } else { m_previousPaymentDay = paymentDateList[index - 1]; } if (index == paymentDateList.Count - 1) { m_nextAsOfDay = null; m_nextPaymentDay = null; } else { m_nextAsOfDay = asOfDateList[index + 1]; m_nextPaymentDay = paymentDateList[index + 1]; } m_isInitialized = true; }
public void ResetPassword(string userName, string password, string repeatPassword) { var user = UserService.GetUserByName(userName); CommUtils.AssertEquals(repeatPassword, password, "两次输入密码不一致"); CommUtils.Assert(password.Length >= 6, "密码最小长度为六位"); CommUtils.Assert(user != null, "用户[{0}]不存在", userName); UserService.SetPasswordHashAsync(user, new PasswordHasher().HashPassword(password)); }
public ActionResult ModifyTaskExtensionCheckList(string shortCode, string groupName, string checkItemName, string checkItemGuid, string checkItemType) { return(ActionUtils.Json(() => { CheckPermission(PermissionObjectType.Task, shortCode, PermissionType.Execute); var task = m_dbAdapter.Task.GetTaskWithExInfo(shortCode); m_dbAdapter.Task.CheckPrevIsFinished(task); CommUtils.Assert(CommUtils.ParseEnum <TaskExtensionType>(task.TaskExtension.TaskExtensionType) == TaskExtensionType.CheckList, "工作[" + task.Description + "]的工作扩展类型不是[工作要点检查]"); var oldItemStatus = CommUtils.ParseEnum <TaskExCheckType>(checkItemType); var revisionCheckType = string.Empty; CommUtils.AssertHasContent(task.TaskExtension.TaskExtensionInfo, "当前工作不包含扩展信息。"); var taskExInfo = task.TaskExtension.TaskExtensionInfo; var taskExCheckListInfo = CommUtils.FromJson <TaskExCheckListInfo>(taskExInfo); CommUtils.AssertEquals(taskExCheckListInfo.CheckGroups.Count(x => x.GroupName == groupName), 1, "找不到检查项分组{0}", groupName); var group = taskExCheckListInfo.CheckGroups.Single(x => x.GroupName == groupName); CommUtils.AssertEquals(group.CheckItems.Count(x => x.Name == checkItemName), 1, "检查项分组{0}中,找不到检查项{1}", checkItemName); var checkItem = group.CheckItems.Single(x => x.Name == checkItemName); CommUtils.AssertEquals(checkItem.Guid, checkItemGuid, "检查项分组{0}中,检查项{1}匹配失败", groupName, checkItemName); CommUtils.AssertEquals(checkItem.CheckStatus, checkItemType, "检查项分组{0}中,检查项{1}状态有误,请刷新后再试", groupName, checkItemName); if (oldItemStatus == TaskExCheckType.Unchecked) { checkItem.CheckStatus = TaskExCheckType.Checked.ToString(); } else if (oldItemStatus == TaskExCheckType.Checked) { checkItem.CheckStatus = TaskExCheckType.Unchecked.ToString(); } else { CommUtils.Assert(false, "无法识别的检查项内容[{0}]", oldItemStatus.ToString()); } revisionCheckType = checkItem.CheckStatus; task.TaskExtension.TaskExtensionInfo = CommUtils.ToJson(taskExCheckListInfo); task.TaskHandler = CurrentUserName; m_dbAdapter.Task.UpdateTaskExtension(task.TaskExtension); var logicModel = Platform.GetProject(task.ProjectId); new TaskLogicModel(logicModel, task).Start(); m_dbAdapter.Task.UpdateTask(task); m_dbAdapter.Task.AddTaskLog(task, "校验分组[" + groupName + "]中的工作要点[" + checkItemName + "],状态为:" + Toolkit.ConvertTaskExCheckType(revisionCheckType)); return ActionUtils.Success(1); })); }
public Investment GetInvestment(int investmentId) { var records = m_db.Fetch <ABSMgrConn.TableInvestment>( "SELECT * FROM dbo.Investment WHERE investment_id = @0 AND record_status_id <> @1 ORDER BY investment_id", investmentId, (int)RecordStatus.Deleted); CommUtils.AssertEquals(records.Count, 1, "Load multiply records from db, investmentId={0}", investmentId); return(new Investment(records.Single())); }
//移除用户对uid的全部权限 private void RemovePermissionByObjType(PermissionObjectType permissionObjectType, List <string> uids, List <string> userNames) { var permissions = m_dbAdapter.Permission.GetAllPermission(userNames, uids); foreach (var permission in permissions) { CommUtils.AssertEquals(permission.ObjectType, permissionObjectType, "检测到权限类型错误:uid={0};objType={1}", permission.ObjectUniqueIdentifier, permission.ObjectType); } m_dbAdapter.Permission.DeletePermission(permissions); }
public ActionResult ModifyIssueDescription(string projectGuid, string issueGuid, string issueActivityGuid, string issueName, string description, string emergencyLevelText, string allotUser, string fileGuidsText, string imageGuidsText, string shortCodeText) { return(ActionUtils.Json(() => { CheckPermission(PermissionObjectType.Project, projectGuid, PermissionType.Read); var issue = m_dbAdapter.Issue.GetIssueByIssueGuid(issueGuid); var issueActivity = m_dbAdapter.IssueActivity.GetIssueActivityByGuid(issueActivityGuid); CommUtils.Assert(issue.IssueStatus != IssueStatus.Finished, "问题[{0}]已经被解决,不能编辑,请刷新页面后重试", issue.IssueName); CommUtils.AssertEquals(issue.Id, issueActivity.IssueId, "当前描述issueActivityGuid[{0}]不属于当前所选择的问题issueGuid[{1}],请刷新页面后重试", issueActivityGuid, issueGuid); CommUtils.Assert(issueActivity.IssueActivityTypeId == IssueActivityType.Original, "问题描述的类型不是"); CommUtils.AssertHasContent(issueName, "问题名称不能为空"); CommUtils.Assert(issueName.Length <= 30, "问题名称不能超过30个字符数"); CommUtils.Assert(description.Length <= 10000, "问题描述不能超过10000个字符数"); if (!string.IsNullOrWhiteSpace(allotUser)) { CommUtils.Assert(m_dbAdapter.Authority.IsUserExist(allotUser), "用户[{0}]不存在,请刷新页面后重试", allotUser); } var emergencyLevel = CommUtils.ParseEnum <IssueEmergencyLevel>(emergencyLevelText); //上传文件和图片 var files = Request.Files; var dicFileAndImageIds = UploadFileAndImage(files); issue.IssueName = issueName; issue.Description = description; issue.IssueEmergencyLevel = emergencyLevel; issue.LastModifyTime = DateTime.Now; issue.LastModifyUserName = CurrentUserName; issue.AllotUser = allotUser; m_dbAdapter.Issue.UpdateIssue(issue); issueActivity.Comment = description; m_dbAdapter.IssueActivity.UpdateIssueActivity(issueActivity); //删除IssueActivity原有的图片及文件 DeleteActivityFilesAndImages(issueActivity.IssueActivityId, fileGuidsText, imageGuidsText); //添加新的文件及图片 if (dicFileAndImageIds != null) { dicFileAndImageIds["file"].ForEach(x => m_dbAdapter.File.NewIssueActivityFile(issueActivity.IssueActivityId, x)); dicFileAndImageIds["image"].ForEach(x => m_dbAdapter.Image.NewIssueActivityImage(issueActivity.IssueActivityId, x)); } return ActionUtils.Success(""); })); }
public ActionResult GetIssueDescription(string projectGuid, string issueGuid, string issueActivityGuid) { return(ActionUtils.Json(() => { CheckPermission(PermissionObjectType.Project, projectGuid, PermissionType.Read); var issue = m_dbAdapter.Issue.GetIssueByIssueGuid(issueGuid); var issueActivity = m_dbAdapter.IssueActivity.GetIssueActivityByGuid(issueActivityGuid); CommUtils.Assert(issue.IssueStatus != IssueStatus.Finished, "问题[{0}]已经被解决,请刷新页面后重试", issue.IssueName); CommUtils.AssertEquals(issue.Id, issueActivity.IssueId, "当前描述issueActivityGuid[{0}]不属于当前所选择的问题issueGuid[{1}]", issueActivityGuid, issueGuid); CommUtils.Assert(issueActivity.IssueActivityTypeId == IssueActivityType.Original, "问题描述的类型不是"); var issueActivityId = issueActivity.IssueActivityId; var fileIds = m_dbAdapter.File.GetFileIdsByIssueActivityId(issueActivityId).ConvertAll(x => x.FileId).ToList(); var imageIds = m_dbAdapter.Image.GetImageIdsByIssueActivityId(issueActivityId).ConvertAll(x => x.ImageId).ToList(); var files = m_dbAdapter.File.GetFilesByIds(fileIds); var images = m_dbAdapter.Image.GetImagesByIds(imageIds); var createUserInfo = Platform.UserProfile.Get(issueActivity.CreateUserName); var connectionTasks = m_dbAdapter.IssueConnectionTasks.GetConnectionTasksByIssueId(issue.Id); var shortCodes = connectionTasks.ConvertAll(x => x.TaskShortCode).ToList(); var tasks = m_dbAdapter.Task.GetTasks(shortCodes); var result = new { Guid = issueActivityGuid, Description = issueActivity.Comment, CreateUserName = createUserInfo.UserName, CreateRealUserName = createUserInfo.RealName, CreateTime = Toolkit.DateTimeToString(issueActivity.CreateTime), LastModifyTime = Toolkit.DateTimeToString(issueActivity.LastModifyTime), ActivityType = issueActivity.IssueActivityTypeId.ToString(), FileInfo = files.ConvertAll(file => new { Guid = file.Guid, Name = file.Name }), ImageInfo = images.ConvertAll(image => new { Guid = image.Guid, Name = image.Name }), IsValid = issueActivity.RecordStatus == RecordStatus.Valid, ConnectionTasks = tasks.ConvertAll(x => new { taskName = x.Description, shortCode = x.ShortCode }) }; return ActionUtils.Success(result); })); }
public ActionResult CreateTasksByMetaTask(string projectGuid, string metaTaskGuid) { return(ActionUtils.Json(() => { var project = m_dbAdapter.Project.GetProjectByGuid(projectGuid); var metaTask = m_dbAdapter.MetaTask.GetByGuid(metaTaskGuid); var prevMetaTaskIds = CommUtils.Split(metaTask.PreMetaTaskIds).Select(x => int.Parse(x)); CommUtils.AssertEquals(project.ProjectId, metaTask.ProjectId, "当前产品下的id[{0}]与工作[{1}]的guid[{2}]不一致", project.ProjectId, metaTask.Name, metaTask.ProjectId); var prevMetaTasks = m_dbAdapter.MetaTask.GetByIds(prevMetaTaskIds); var dictPrevMetaTask = prevMetaTasks.ToDictionary(x => x.Id.ToString()); var beginTimeSeries = metaTask.StartTimeSeriesId.HasValue && metaTask.StartTimeSeriesId.Value != 0 ? m_dbAdapter.TimeSeries.GetById(metaTask.StartTimeSeriesId.Value) : null; var endTimeSeries = m_dbAdapter.TimeSeries.GetById(metaTask.EndTimeSeriesId); if (beginTimeSeries == null) { var endTimeRule = GetTimeRuleDetail(endTimeSeries.Id); var endTimeOrigin = GetTimeOriginDetail(endTimeSeries.Guid, endTimeSeries.Id); var endTimeStrList = GetTimeListByTimeRuleOrigin(endTimeRule, endTimeOrigin); var endTimeList = endTimeStrList.ConvertAll(x => DateTime.Parse(x)).ToList(); //遍历beginTimeList跟endTimeList开始进行生成工作 GenerateTasks(metaTask, new List <DateTime>(), endTimeList); } else { var beginTimeRule = GetTimeRuleDetail(beginTimeSeries.Id); var beginTimeOrigin = GetTimeOriginDetail(beginTimeSeries.Guid, beginTimeSeries.Id); var beginTimeStrList = GetTimeListByTimeRuleOrigin(beginTimeRule, beginTimeOrigin); var beginTimeList = beginTimeStrList.ConvertAll(x => DateTime.Parse(x)).ToList(); var endTimeRule = GetTimeRuleDetail(endTimeSeries.Id); var endTimeOrigin = GetTimeOriginDetail(endTimeSeries.Guid, endTimeSeries.Id); var endTimeStrList = GetTimeListByTimeRuleOrigin(endTimeRule, endTimeOrigin); var endTimeList = endTimeStrList.ConvertAll(x => DateTime.Parse(x)).ToList(); CommUtils.Assert(beginTimeList.Count == endTimeList.Count && endTimeList.Count != 0, "开始时间的数量[{0}]与截止时间的数量[{1}]不匹配,无法创建工作", beginTimeList.Count, endTimeList.Count); //遍历beginTimeList跟endTimeList开始进行生成工作 GenerateTasks(metaTask, beginTimeList, endTimeList); } return ActionUtils.Success(""); })); }
public ActionResult ResetUserPassword(string userName, string password, string repeatPassword) { var user = UserService.GetUserByName(userName); CommUtils.AssertEquals(repeatPassword, password, "两次输入密码不一致"); CommUtils.Assert(password.Length >= 6, "密码最小长度为六位"); CommUtils.Assert(user != null, "用户[{0}]不存在", userName); UserService.SetPasswordHashAsync(user, new PasswordHasher().HashPassword(password)); return(Json(new JsonResultDataEntity <string>() { Code = 0 })); }
private Dictionary <string, string> ParseKeyValue(string triggerOption) { var dict = new Dictionary <string, string>(); var triggerOptionItems = CommUtils.Split(triggerOption); foreach (var trigger in triggerOptionItems) { var keyValue = CommUtils.Split(trigger, new[] { "^" }); CommUtils.AssertEquals(keyValue.Length, 2, "解析keyValue[{0}]失败", triggerOption); dict[keyValue[0]] = keyValue[1]; } return(dict); }
public ActionResult GetMetaTask(string projectGuid, string metaTaskGuid) { return(ActionUtils.Json(() => { var project = m_dbAdapter.Project.GetProjectByGuid(projectGuid); var metaTask = m_dbAdapter.MetaTask.GetByGuid(metaTaskGuid); var prevMetaTaskIds = CommUtils.Split(metaTask.PreMetaTaskIds).Select(x => int.Parse(x)); CommUtils.AssertEquals(project.ProjectId, metaTask.ProjectId, "当前产品下的id[{0}]与工作[{1}]的guid[{2}]不一致", project.ProjectId, metaTask.Name, metaTask.ProjectId); var prevMetaTasks = m_dbAdapter.MetaTask.GetByIds(prevMetaTaskIds); var dictPrevMetaTask = prevMetaTasks.ToDictionary(x => x.Id.ToString()); var beginTimeSeries = metaTask.StartTimeSeriesId.HasValue && metaTask.StartTimeSeriesId.Value != 0 ? m_dbAdapter.TimeSeries.GetById(metaTask.StartTimeSeriesId.Value) : null; var endTimeSeries = m_dbAdapter.TimeSeries.GetById(metaTask.EndTimeSeriesId); var result = new { metaTaskName = metaTask.Name, metaTaskGuid = metaTask.Guid, projectGuid = project.ProjectGuid, beginTimeGuid = beginTimeSeries == null ? null : beginTimeSeries.Guid, endTimeGuid = endTimeSeries.Guid, beginTime = beginTimeSeries == null ? null : new { beginTimeRules = GetTimeRuleDetail(beginTimeSeries.Id), beginTimeOrigin = GetTimeOriginDetail(beginTimeSeries.Guid, beginTimeSeries.Id) }, endTime = new { endTimeRules = GetTimeRuleDetail(endTimeSeries.Id), endTimeOrigin = GetTimeOriginDetail(endTimeSeries.Guid, endTimeSeries.Id) }, prevMetaTask = prevMetaTasks.ConvertAll(x => new { prevMetataskName = x.Name, prevMetaTaskGuid = x.Guid }), taskExtensionType = metaTask.TaskExtensionType.ToString(), detail = metaTask.Detail, target = metaTask.Target, createUserName = metaTask.CreateUserName, createTime = metaTask.CreateTime.ToString("yyyy-MM-dd"), lastModifyTime = metaTask.LastModifyTime.ToString("yyyy-MM-dd"), lastModifyUserName = metaTask.LastModifyUserName, }; return ActionUtils.Success(result); })); }
public ActionResult UploadTemplateTimeFile(string templateGuid) { return(ActionUtils.Json(() => { CommUtils.Assert(Request.Files.Count > 0, "请选择文件"); var file = Request.Files[0]; CommUtils.Assert(file.ContentLength > 0, "请选择文件"); CommUtils.Assert(file.FileName.EndsWith(".xlsx", StringComparison.CurrentCultureIgnoreCase), "只支持导入Excel(.xlsx)文件"); file.InputStream.Seek(0, SeekOrigin.Begin); var table = ExcelUtils.ParseExcel(file.InputStream, 0, 1, 0, 9); CommUtils.Assert(table.Count > 0, "模板时间为空"); var template = m_dbAdapter.Template.GetTemplate(templateGuid); var templateNames = table.Select(x => x[0].ToString()).ToList(); var index = templateNames.FindIndex(x => x != template.TemplateName); if (index >= 0) { CommUtils.Assert(false, "模板时间中包含[{0}]的模板名称,和当前模板[{1}]不一致", templateNames[index], template.TemplateName); } //判断excel数据格式并序列化 List <TemplateTime> templateTimeList = ParseTemplateTimeTable(table); templateTimeList.ForEach(x => x.TemplateId = template.TemplateId); //数据库里所有的时间名称 var dbNames = m_dbAdapter.Template.GetTemplateTimeNames(template.TemplateId) .ConvertAll(x => x.TemplateTimeName); //excel里的所有时间名称 var excelNames = table.ConvertAll(x => (string)x[1]); CommUtils.AssertEquals(excelNames.Count, excelNames.Distinct().Count(), "模板时间中包含重复的模板时间名称"); var names = excelNames.Intersect(dbNames).ToList(); CommUtils.Assert(names.Count == 0, "模板时间名称({0})已存在,请查证后在上传", CommUtils.Join(names)); var templateTimeIds = templateTimeList.ConvertAll(x => m_dbAdapter.Template.NewTemplateTime(x).TemplateTimeId); var newTimeIds = CommUtils.Join(templateTimeIds.ConvertAll(x => x.ToString())); LogEditProduct(EditProductType.EditTask, null, "从Excel导入时间模板", "共导入[" + templateTimeList.Count + "]条时间模板,templateId=[" + template.TemplateId + "],新增templateTimeId=[" + newTimeIds + "]"); CommUtils.AssertEquals(templateTimeIds.Count, templateTimeList.Count, "上传模板失败,模板数据有误"); return ActionUtils.Success(templateTimeList.Count); })); }
public void Confirm(double currentAccountBalance, double paymentMoney) { var task = this.Task; m_dbAdapter.Task.CheckPrevIsFinished(Task); CommUtils.Assert(task.TaskExtensionId.HasValue, "ConfirmRecyclingPaymentDate失败,Task不包含扩展信息。"); var taskExtension = m_dbAdapter.Task.GetTaskExtension(task.TaskExtensionId.Value); CommUtils.AssertEquals(taskExtension.TaskExtensionType, TaskExtensionType.RecyclingPaymentDate.ToString(), "ConfirmRecyclingPaymentDate失败,TaskExtensionType错误。"); var bankAccounts = m_dbAdapter.BankAccount.GetAccounts(task.ProjectId, true); var taskExInfo = RecyclingPaymentDate.FromJson(Task.TaskExtension.TaskExtensionInfo); var compareSign = CommUtils.ParseEnum <SignComparisonModes>(taskExInfo.CompareSign); var acountType = CommUtils.ParseEnum <EAccountType>(taskExInfo.AccountType); if (compareSign != SignComparisonModes.NotCompare) { var bankCount = bankAccounts.Count(x => x.AccountType == acountType); CommUtils.Assert(bankCount < 2, "[{0}]不唯一", acountType.ToString()); CommUtils.Assert(bankCount > 0, "未配置[{0}],请在[存续期设置]>[账户配置]中增加[{0}]。", acountType.ToString()); var accountBalance = bankAccounts.Where(x => x.AccountType == acountType && x.CurrentBalance != null) .Sum(x => x.CurrentBalance.EndBalance); CommUtils.AssertEquals((decimal)currentAccountBalance, accountBalance, "当前账户余额已更新,请刷新网页后再试"); } var compareResult = CompareAccount(currentAccountBalance, paymentMoney, compareSign, acountType); CommUtils.Assert(compareResult.IsPassed, compareResult.ErrorDetail); taskExInfo.PaymentMoney = (decimal)paymentMoney; taskExInfo.ConfirmedAccountBalance = (decimal)currentAccountBalance; var json = CommUtils.ToJson(taskExInfo); taskExtension.TaskExtensionInfo = json; taskExtension.TaskExtensionStatus = TaskExtensionStatus.Finished; taskExtension.TaskExtensionHandler = m_userName; taskExtension.TaskExtensionHandleTime = DateTime.Now; m_dbAdapter.Task.SaveTaskExtension(taskExtension); var logicModel = new ProjectLogicModel(m_userName, task.ProjectId); new TaskLogicModel(logicModel, task).Start(); }
public void ModifyPassword(string oldPassword, string password, string repeatPassword) { CommUtils.Assert(oldPassword.Length >= 6, "原密码格式错误,密码最小长度为六位"); CommUtils.AssertEquals(repeatPassword, password, "两次输入密码不一致"); CommUtils.Assert(password.Length >= 6, "新密码最小长度为六位"); var user = UserService.GetUserById(CurrentUserId); CommUtils.Assert(user != null, "用户[{0}]信息错误,无法修改密码", CurrentUser.UserName); var result = SignInManager.PasswordSignInAsync(user.UserName, oldPassword, true, false).Result; CommUtils.Assert(result != SignInStatus.Success || result != SignInStatus.LockedOut, "输入用户名和密码不匹配,如遗忘密码,请联系管理员进行密码重置"); UserService.SetPasswordHashAsync(CurrentUser, password); }
public ActionResult DeleteIssue(string projectGuid, string issueGuid) { return(ActionUtils.Json(() => { CheckPermission(PermissionObjectType.Project, projectGuid, PermissionType.Read); var project = m_dbAdapter.Project.GetProjectByGuid(projectGuid); var issue = m_dbAdapter.Issue.GetIssueByIssueGuid(issueGuid); CommUtils.Assert(IsCurrentUser(issue.CreateUserName), "当前用户[{0}]不是问题[{1}]的提出者,无法删除该问题", CurrentUserName, issue.IssueName); CommUtils.AssertEquals(issue.ProjectId, project.ProjectId, "追加的问题[{0}]和当前项目[{1}]不属于同一个项目,请刷新页面后重试", issue.IssueName, project.Name); m_dbAdapter.Issue.DeleteIssue(issue); return ActionUtils.Success(""); })); }
public ActionResult CreateFolders(string shortCode, string parentFolderGuid, List <string> folderNames, List <string> folderDescriptions) { return(ActionUtils.Json(() => { ValidateUtils.Name(folderNames, "文件夹名称", 100).FileName(); CommUtils.AssertEquals(folderNames.Count, folderDescriptions.Count, "传入folderNames和folderDescriptions长度不相等"); CommUtils.AssertEquals(folderNames.Select(x => x.ToLower()).Distinct().Count(), folderNames.Count, "传入了重复的文件夹名"); var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Write); var parentFolder = m_dbAdapter.DMSFolder.GetByGuid(parentFolderGuid); CommUtils.AssertEquals(parentFolder.DMSId, dms.Instance.Id, "传入projectGuid和folderGuid不在同一个DMS中"); var sibbingFolders = dms.AllFolders.Where(x => x.ParentFolderId.HasValue && x.ParentFolderId.Value == parentFolder.Id); foreach (var folderName in folderNames) { CommUtils.Assert(!sibbingFolders.Any(x => x.Name.Equals(folderName, StringComparison.CurrentCultureIgnoreCase)), "文件夹[{0}]已经存在,请刷新后再试", folderName); } var folders = new List <DMSFolder>(); var now = DateTime.Now; for (int i = 0; i < folderNames.Count; i++) { var folder = new DMSFolder(); folder.DMSId = dms.Instance.Id; folder.Name = folderNames[i]; folder.Description = folderDescriptions[i]; folder.DmsFolderType = DmsFolderType.Normal; folder.ParentFolderId = parentFolder.Id; folder.CreateTime = now; folder.CreateUserName = CurrentUserName; folder.LastModifyTime = now; folder.LastModifyUserName = CurrentUserName; folder = m_dbAdapter.DMSFolder.Create(folder); folders.Add(folder); } var folderNamesArray = folderNames.ConvertAll(x => "[" + x + "]").ToArray(); m_dbAdapter.Task.AddTaskLog(shortCode, "创建文件夹" + string.Join(",", folderNamesArray)); var folderGuids = folders.Select(x => x.Guid); return ActionUtils.Success(folderGuids); })); }
public ActionResult ModifyPassword(string oldPassword, string password, string repeatPassword) { return(ActionUtils.Json(() => { var user = UserService.GetUserByName(CurrentUserName); CommUtils.Assert(oldPassword.Length >= 6, "原密码格式错误,密码最小长度为六位"); CommUtils.AssertEquals(repeatPassword, password, "两次输入密码不一致"); CommUtils.Assert(password.Length >= 6, "新密码最小长度为六位"); CommUtils.Assert(user != null, "用户[{0}]不存在", CurrentUserName); var result = SignInManager.PasswordSignInAsync(user.UserName, password, true, false).Result; CommUtils.Assert(result != SignInStatus.Success || result != SignInStatus.LockedOut, "输入用户名和密码不匹配,如遗忘密码,请联系管理员进行密码重置"); UserService.SetPasswordHashAsync(CurrentUser, password); return ActionUtils.Success(1); })); }
public ActionResult EstimateTemplateTime(string templateGuid, string templateTimeName) { return(ActionUtils.Json(() => { var template = m_dbAdapter.Template.GetTemplate(templateGuid); var templateTimes = m_dbAdapter.Template.GetTemplateTimeLists(template.TemplateId); CommUtils.AssertEquals(templateTimes.Count(x => x.TemplateTimeName == templateTimeName), 1, "模板中有多个名称为[{0}]的模板时间", templateTimeName); var templateTime = templateTimes.Single(x => x.TemplateTimeName == templateTimeName); bool isForward = templateTime.SearchDirection == TemplateTimeSearchDirection.Forward; bool ignoreReduplicateDays = templateTime.HandleReduplicate == TemplateTimeHandleReduplicate.Ignore; var dateList = DateUtils.GenerateDateList(templateTime.BeginTime, templateTime.EndTime, templateTime.TimeSpan, templateTime.TimeSpanUnit, templateTime.TemplateTimeType, isForward, ignoreReduplicateDays); var result = dateList.ConvertAll(x => x.ToString("yyyy-MM-dd")); return ActionUtils.Success(result); })); }
public ActionResult GetProjects(string projectType) { return(ActionUtils.Json(() => { //TODO: CommUtils.AssertEquals(projectType, "存续期", "目前仅支持获取存续期产品列表"); var projectIds = m_dbAdapter.Authority.GetAuthorizedProjectIds(); var projects = m_dbAdapter.Project.GetProjects(projectIds); var result = projects.ConvertAll(x => new { name = x.Name, guid = x.ProjectGuid }); return ActionUtils.Success(result); })); }