Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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();
            }
        }