public ActionResult Create(ProjectExternalWorkspace projectExternalWorkspace) { if (!string.IsNullOrEmpty(projectExternalWorkspace.ExternalWorkspaceProjectShortName) && _jiraService.IsExternalWorkspaceProjectShortName(projectExternalWorkspace.ExternalWorkspaceProjectShortName) == false) { ModelState.AddModelError("ExternalWorkspaceProjectShortName", "Код проекта не найден в системе Jira."); } foreach (var project in _projectService.Get(x => x.Include(p => p.ProjectExternalWorkspace).Where(r => r.ProjectExternalWorkspace.Where(t => t.WorkspaceType == ExternalWorkspaceType.JIRA).Any(t => t.ExternalWorkspaceProjectShortName == projectExternalWorkspace.ExternalWorkspaceProjectShortName)).ToList())) { foreach (var projectExternalWorkspaceTMP in project.ProjectExternalWorkspace.Where(x => x.ExternalWorkspaceProjectShortName == projectExternalWorkspace.ExternalWorkspaceProjectShortName)) { if (projectExternalWorkspace.ExternalWorkspaceDateBegin >= projectExternalWorkspaceTMP.ExternalWorkspaceDateBegin && projectExternalWorkspace.ExternalWorkspaceDateBegin <= projectExternalWorkspaceTMP.ExternalWorkspaceDateEnd) { ModelState.AddModelError("ExternalWorkspaceDateBegin", "Период действия пересекается с проектом:" + projectExternalWorkspaceTMP.Project.ShortName); } if (projectExternalWorkspace.ExternalWorkspaceDateEnd >= projectExternalWorkspaceTMP.ExternalWorkspaceDateBegin && projectExternalWorkspace.ExternalWorkspaceDateEnd <= projectExternalWorkspaceTMP.ExternalWorkspaceDateEnd) { ModelState.AddModelError("ExternalWorkspaceDateEnd", "Период действия пересекается с проектом:" + projectExternalWorkspaceTMP.Project.ShortName); } } } if (ModelState.IsValid) { projectExternalWorkspace.WorkspaceType = ExternalWorkspaceType.JIRA; _projectExternalWorkspaceService.Add(projectExternalWorkspace); string returnUrl = Url.Action("Details", "Project", new { id = projectExternalWorkspace.ProjectID + "#projectexternalworkspaces" }).Replace("%23", "#"); return(new RedirectResult(returnUrl)); } ViewBag.ProjectID = new SelectList(_projectService.Get(x => x.ToList().OrderBy(p => p.ShortName).ToList()), "ID", "ShortName", projectExternalWorkspace.ProjectID); return(View(projectExternalWorkspace)); }
public ActionResult Create(int?projectId) { var projectExternalWorkspace = new ProjectExternalWorkspace(); if (projectId.HasValue) { projectExternalWorkspace.ProjectID = projectId.Value; } ViewBag.ProjectID = new SelectList(_projectService.Get(x => x.ToList().OrderBy(p => p.ShortName).ToList()), "ID", "ShortName"); return(View(projectExternalWorkspace)); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { try { var permissionValidator = filterContext.HttpContext.RequestServices.GetService <IPermissionValidatorService>(); var applicationUserService = filterContext.HttpContext.RequestServices.GetService <IApplicationUserService>(); var projectExternalWorkspaceService = filterContext.HttpContext.RequestServices.GetService <IProjectExternalWorkspaceService>(); IPrincipal user = filterContext.HttpContext.User; if (!permissionValidator.HasAccess(user, Operation.ProjectView | Operation.ProjectExternalWorkspaceView | Operation.ProjectMyProjectView | Operation.ProjectMyDepartmentProjectView)) { filterContext.Result = NoPermissionResult.Generate(); } else if (permissionValidator.HasAccess(user, Operation.ProjectMyProjectView | Operation.ProjectMyDepartmentProjectView) && !permissionValidator.HasAccess(user, Operation.ProjectView | Operation.ProjectExternalWorkspaceView)) { ApplicationUser applicationUser = applicationUserService.GetUser(); int? id = null; try { id = filterContext.ActionArguments["id"] as int?; } catch (Exception) { } if (id != null) { ProjectExternalWorkspace projectExternalWorkspace = projectExternalWorkspaceService.GetById((int)id); Project project = projectExternalWorkspace.Project; if (project == null) { filterContext.Result = NoPermissionResult.Generate(); } else if (applicationUserService.IsMyProject(project) == false) { filterContext.Result = NoPermissionResult.Generate(); } } else { filterContext.Result = NoPermissionResult.Generate(); } } } catch (Exception) { filterContext.Result = NoPermissionResult.Generate(); } }