Esempio n. 1
0
        public int SaveIssue(CreateIssue issue)
        {
            using (var con = new SqlConnection(ConnectionString))
            {
                con.Open();
                if (issue.Id == 0)
                {
                    issue.CreatedDate = DateTime.Now;
                    var q =
                        con.Query <int>(
                            @"INSERT INTO Issue(Title,Description,DueDate,CategoryId,StatusID,PriorityID,ProjectID,TeamId,Active,CreatedDate,CreatedByID) 
                        VALUES(@title,@description,@IssueDueDate,@categoryId,@statusId,@priorityId,@projectId,@teamId,1,@createdDate,@createdById);SELECT CAST(SCOPE_IDENTITY() as int)",
                            issue);

                    return(q.First());
                }
                else
                {
                    con.Execute(
                        "UPDATE Issue SET Title=@title,Description=@description,CategoryId=@CategoryId,ProjectId=@ProjectId,StatusId=@statusId,PriorityId=@priorityId WHERE Id=@id",
                        issue);
                    return(issue.Id);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Returns a new CreateIssue based on this view model.
        /// </summary>
        /// <returns>a new CreateIssue based on this view model</returns>
        public CreateIssue ToCreateIssue()
        {
            var newIssue = new CreateIssue(Util.GetProjectKey(), Summary, Description, issueTypeId, priorityId, labels);

            newIssue.AddField(Util.GetClientReporterFieldName(), ClientReporter);
            return(newIssue);
        }
Esempio n. 3
0
        public async Task IssueCRUDTest()
        {
            //Read
            var initCount = (await GetIssues()).Count;

            //Create
            var createCommand = new CreateIssue(
                IssueType.Task,
                "Check Create Task",
                "Task should be created after running command"
                );

            var createdIssue = await CreateIssue(createCommand, initCount);

            //Update
            var updateCommand = new UpdateIssue(
                createdIssue.Id,
                IssueType.Task,
                "Check Update Task",
                "Task should be update after running command"
                );

            await UpdateIssue(updateCommand);

            //Delete
            await DeleteIssue(createdIssue.Id);
        }
        private int SaveAttachedDocument(CreateIssue model, OperationStatus result, int fileCounter, HttpPostedFileBase file)
        {
            if (file != null)
            {
                fileCounter++;

                string fileName = Path.GetFileName(file.FileName).ToLower();
                string fileKey  = fileName;
                fileKey = fileKey.Replace(" ", "-").Replace("%", "-");

                fileKey = String.Format("{0}-{1}-{2:n}-{3}", result.OperationID, fileCounter, Guid.NewGuid(), fileName);

                if (fileKey.Length > 99)
                {
                    fileKey = fileKey.Substring(0, 99);
                }

                string path = Path.Combine(Server.MapPath("~/uploads"), fileKey);
                file.SaveAs(path);

                Document img = new Document {
                    FileName = fileName, ParentID = model.Id
                };
                img.FileAlias   = fileKey;
                img.CreatedByID = UserID;
                img.ParentID    = result.OperationID;
                var resultForImg = repo.SaveDocument(img);
                if (!resultForImg.Status)
                {
                    log.Debug(resultForImg);
                }
            }
            return(fileCounter);
        }
        public async Task LoadDropdownData(CreateIssue issue)
        {
            issue.Projects = this.iProjectRepository.GetProjects(this.userSessionHelper.TeamId)
                             .Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            })
                             .ToList();


            var statuses = await this.cache.Get(CacheKey.Statuses, () => this.issueRepository.GetStatuses(), 360);

            var priorities = await this.cache.Get(CacheKey.Priorities, () => this.issueRepository.GetPriorities(), 360);

            var catagories = await this.cache.Get(CacheKey.Categories, () => this.issueRepository.GetCategories(), 360);

            issue.Statuses = statuses.Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            }).ToList();
            issue.Priorities = priorities.Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            }).ToList();
            issue.Categories = catagories.Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            }).ToList();
        }
Esempio n. 6
0
        public void LoadDropdownData(CreateIssue issue)
        {
            issue.Projects =
                this.iProjectRepository.GetProjects(this.userSessionHelper.TeamId)
                .Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            })
                .ToList();

            issue.Statuses = this.issueRepository.GetStatuses()
                             .Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            })
                             .ToList();

            issue.Priorities = this.issueRepository.GetPriorities()
                               .Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            })
                               .ToList();

            issue.Categories = this.issueRepository.GetCategories()
                               .Select(s => new SelectListItem {
                Value = s.Id.ToString(), Text = s.Name
            })
                               .ToList();
        }
        private void LoadDefaultIssueValues(Issue issue, CreateIssue model)
        {
            issue.PriorityID = model.SelectedPriority;
            if (issue.PriorityID == 0)
            {
                issue.PriorityID = 1;
            }

            issue.ProjectID = model.SelectedProject;
            if (issue.ProjectID == 0)
            {
                var teamMember = repo.GetTeamMember(UserID, TeamID);
                if (teamMember.DefaultProjectID == null)
                {
                    throw new MissingSettingsException("Default Project not set", "Default Project");
                }
                //get from team member
                issue.ProjectID = teamMember.DefaultProjectID.Value;
            }
            issue.StatusID = model.SelectedStatus;
            if ((model.Id == 0) && (model.SelectedStatus == 0))
            {
                issue.StatusID = 1;
            }
            issue.CategoryID = model.SelectedCategory;
            if (issue.CategoryID == 0)
            {
                issue.CategoryID = 1;
            }

            issue.Location = (string.IsNullOrEmpty(model.SelectedIteration) ? "SPRNT" : model.SelectedIteration);
        }
        public async Task <IActionResult> Add()
        {
            var vm = new CreateIssue();

            await this._issueManager.LoadDropdownData(vm);

            return(PartialView("~/Views/Issues/Partial/Edit.cshtml", vm));
        }
 private void LoadDropDownsForCreate(CreateIssue viewModel)
 {
     viewModel.Projects   = ProjectService.GetProjects(repo, TeamID);
     viewModel.Priorities = ProjectService.GetPriorities(repo);
     viewModel.Categories = ProjectService.GetCategories(repo);
     viewModel.Statuses   = ProjectService.GetStatuses(repo);
     viewModel.Iterations = ProjectService.GetIterations();
 }
Esempio n. 10
0
        private IEnumerable <SelectListItem> PopulateIssueTypes(CreateIssue model = null)
        {
            Dictionary <int, string> issues = new Dictionary <int, string> {
                { 0, "Story" }, { 1, "Task" }, { 2, "Test Task" }, { 3, "Bug" }
            };

            return(issues.AsEnumerable().ToSelectListItems(value => value.Key.ToString(), text => text.Value, selected => model != null && model.IssueType == selected.Key));
        }
        public async Task <IssueCreatedResult> CreateIssue([FromBody] CreateIssue issue)
        {
            var commandResult = await _mediator.Send(issue);

            var dto = _mapper.Map <IssueCreatedResult>(commandResult);

            return(dto);
        }
        private string CreateNewBug()
        {
            //Need to implement this
            CreateIssue newIssue = new CreateIssue(this.projectName, base.BugTitle, base.BugDescription, "1", "1", null);

            client.CreateIssue(newIssue);
            return(this.GetPreviouslyEnteredBugURL());
        }
 private void LoadDropDownsForCreate(CreateIssue viewModel)
 {
     viewModel.Projects = projectManager.GetProjects().Select(s => new SelectListItem {
         Value = s.Id.ToString(), Text = s.Name
     }).ToList();
     viewModel.Priorities = ProjectService.GetPriorities(repo);
     viewModel.Categories = ProjectService.GetCategories(repo);
     viewModel.Statuses   = ProjectService.GetStatuses(repo);
     viewModel.Iterations = ProjectService.GetIterations();
 }
Esempio n. 14
0
        public async Task UpdateIssueWithNotValidData_ShouldReturnBadRequest()
        {
            var command = new CreateIssue(
                IssueType.Task,
                null,
                null
                );

            var response = await _sut.Client.PostAsync("/api/Issues", command.ToJsonStringContent());

            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
        /// <summary>
        /// Creates a new issue. Throws a JiraApiException if the request was
        /// unable to execute.
        /// </summary>
        /// <returns>the new issue</returns>
        public BasicIssue CreateIssue(CreateIssue newIssue)
        {
            var request = new RestRequest()
            {
                Resource      = ResourceUrls.Issue(),
                RequestFormat = DataFormat.Json,
                Method        = Method.POST
            };

            request.AddBody(newIssue);

            return(Execute <BasicIssue>(request, HttpStatusCode.Created));
        }
Esempio n. 16
0
        private CreateIssue CreateIssueModel(CreateIssue model, bool isModal)
        {
            if (model == null)
            {
                model = new CreateIssue {
                    IsModal = isModal
                };
            }

            model.IssueTypeOptions = PopulateIssueTypes(model);

            return(model);
        }
Esempio n. 17
0
        private void addIssueActionItems(int generation)
        {
            List <JiraNamedEntity> actions = null;

            if (!issue.IsSubtask && issue.Server.BuildNumber > 0)
            {
                this.safeInvoke(new MethodInvoker(delegate {
                    if (generation != menuOpenGeneration)
                    {
                        return;
                    }
                    Items.Add(new ToolStripSeparator());
                    Items.Add(new ToolStripMenuItem("Add Subtask", Resources.add_jira, new EventHandler(
                                                        delegate {
                        CreateIssue.createDialogOrBringToFront(issue.Server, issue);
                    }
                                                        )));
                }));
            }
            try {
                actions = SmartJiraServerFacade.Instance.getActionsForIssue(issue);
            } catch (Exception e) {
                status.setError("Failed to retrieve issue actions", e);
            }
            if (actions == null || actions.Count == 0)
            {
                return;
            }

            this.safeInvoke(new MethodInvoker(delegate {
                // PLVS-39 - only update current menu, skip results of previous getActionsForIssue()
                // in case the user quickly opens context menu more than once
                if (generation != menuOpenGeneration)
                {
                    return;
                }

                Items.Add(new ToolStripSeparator());
                foreach (var action in actions)
                {
                    var actionCopy         = action;
                    ToolStripMenuItem item = new ToolStripMenuItem(
                        action.Name, null,
                        new EventHandler(
                            delegate {
                        IssueActionRunner.runAction(this, actionCopy, model, issue, status, null);
                    }));
                    Items.Add(item);
                }
            }));
        }
        public ActivityDto SaveActivity(CreateIssue model, IssueDetailVM previousVersion, IssueDetailVM newVersion)
        {
            bool isStateChanged = false;
            var  activity       = new ActivityDto()
            {
                ObjectId = newVersion.Id, ObjectType = "Issue"
            };

            if (previousVersion == null)
            {
                activity.ObjectUrl = "issue/" + newVersion.Id;
                //activity.CreatedBy =
                activity.Description = "Created";
                activity.ObjectTitle = model.Title;
                isStateChanged       = true;
            }
            else
            {
                if (previousVersion.Status.Id != newVersion.Status.Id)
                {
                    // status of issue updated
                    activity.Description = "Changed status";
                    activity.NewState    = newVersion.Status.Name;
                    activity.OldState    = previousVersion.Status.Name;
                    activity.ObjectTitle = newVersion.Title;
                    isStateChanged       = true;
                }
                else if (previousVersion.Category.Id != newVersion.Category.Id)
                {
                    activity.Description = "Changed category";
                    activity.NewState    = newVersion.Category.Name;
                    activity.OldState    = previousVersion.Category.Name;
                    activity.ObjectTitle = newVersion.Title;
                    isStateChanged       = true;
                }
            }
            activity.CreatedTime = DateTime.Now;
            activity.TeamId      = userSessionHelper.TeamId;

            activity.Actor = new UserDto {
                Id = userSessionHelper.UserId
            };

            if (isStateChanged)
            {
                var newId = activityRepository.Save(activity);
                return(activityRepository.GetActivityItem(newId));
            }
            return(null);
        }
Esempio n. 19
0
        public IssueDetailVM SaveIssue(CreateIssue issue, List <HttpPostedFileBase> files)
        {
            issue.TeamID      = userSessionHelper.TeamId;
            issue.CreatedByID = userSessionHelper.UserId;
            issue.ProjectID   = GetDefaultProjectId();


            var issueId = issueRepository.SaveIssue(issue);

            return(issueRepository.GetIssue(issueId));

            //Activity entry
            //  return SaveActivity(issue, previousVersion, newVersion);
        }
Esempio n. 20
0
        public IActionResult Edit(int id)
        {
            var issue = this.issueManager.GetIssue(id);

            if (issue != null && issue.Active)
            {
                var vm = new CreateIssue(issue);
                this.issueManager.LoadDropdownData(vm);

                vm.IsEditableForCurrentUser = this.teamManager.DoesCurrentUserBelongsToTeam();
                return(PartialView("~/Views/Issues/Partial/Edit.cshtml", vm));
            }
            return(PartialView("NotFound"));
        }
        public async Task <IActionResult> Edit(int id)
        {
            var issue = await this._issueManager.GetIssue(id);

            if (issue != null && issue.Active)
            {
                var vm = new CreateIssue(issue);
                await this._issueManager.LoadDropdownData(vm);

                vm.IsEditableForCurrentUser = this._teamManager.DoesCurrentUserBelongsToTeam(this._userSessionHelper.UserId, this._userSessionHelper.TeamId);
                return(PartialView("~/Views/Issues/Partial/Edit.cshtml", vm));
            }
            return(PartialView("NotFound"));
        }
        public async Task <IssueDetailVM> SaveIssue(CreateIssue issue, List <IFormFile> files)
        {
            bool isNewIssue = issue.Id == 0;

            if (issue.ProjectId == 0)
            {
                var defaultProject = await iProjectRepository.GetDefaultProjectForTeamMember(this.userSessionHelper.TeamId,
                                                                                             this.userSessionHelper.UserId);

                if (defaultProject == null)
                {
                    throw new MissingSettingsException("Missing data", "Default project");
                }
                issue.ProjectId = defaultProject.Id;
            }
            if (issue.CategoryId == 0)
            {
                var categories = await this.issueRepository.GetCategories();

                issue.CategoryId = categories.First().Id;
            }
            if (issue.PriorityId == 0)
            {
                var categories = await this.issueRepository.GetPriorities();

                issue.PriorityId = categories.First().Id;
            }
            if (issue.StatusId == 0)
            {
                var statuses = await this.issueRepository.GetStatuses();

                issue.StatusId = statuses.First().Id;
            }
            issue.CreatedById = this.userSessionHelper.UserId;
            issue.TeamID      = this.userSessionHelper.TeamId;
            var issueId     = this.issueRepository.SaveIssue(issue);
            var issueDetail = this.issueRepository.GetIssue(issueId, this.userSessionHelper.UserId);


            if (isNewIssue)
            {
                await emailManager.SendIssueCreatedEmail(issueDetail, this.userSessionHelper.TeamId);

                //.QueueBackgroundWorkItem(ct => SendMailAsync(user.Email));
            }


            return(issueDetail);
        }
Esempio n. 23
0
        public Issue CreateIssue(CreateIssue data)
        {
            //prepare the initial issue model to insert
            IssueEntity   issueEntity   = _mapper.Map <IssueEntity>(data);
            ReleaseEntity releaseEntity = null;

            if (data.ExistingPlannedReleaseId.HasValue && data.ExistingPlannedReleaseId.Value != 0)
            {
                //check if the release exists
                releaseEntity = _releasesUow.Releases.SingleOrDefault(x => x.Id == data.ExistingPlannedReleaseId.Value);
                if (releaseEntity == null)
                {
                    throw new Exception("Invalid release id");
                }
                else
                {
                    issueEntity.PlannedReleaseId = data.ExistingPlannedReleaseId;
                }
            }
            else if (data.NewPlannedRelease != null)
            {
                //we can still change to a different isolation level because we haven't done anything with Releases database yet
                _releasesUow.SetIsolationLevel(IsolationLevel.ReadCommitted);

                releaseEntity = _mapper.Map <ReleaseEntity>(data.NewPlannedRelease);
                _releasesUow.Releases.Add(releaseEntity);
                _releasesUow.SaveChanges();

                issueEntity.PlannedReleaseId = releaseEntity.Id;
            }

            //add issue to the database
            _issuesUow.Issues.Add(issueEntity);
            _issuesUow.SaveChanges();

            //prepare and return models
            var issue = _mapper.Map <Issue>(issueEntity);

            if (releaseEntity != null)
            {
                issue.PlannedRelease = _mapper.Map <Release>(releaseEntity);
            }

            return(issue);
        }
Esempio n. 24
0
 public ActionResult CreateIssue(CreateIssue model)
 {
     if (!ModelState.IsValid && model.IsModal)
     {
         return(PartialView("CreateIssue", CreateIssueModel(model, true)));
     }
     else if (!ModelState.IsValid)
     {
         return(PartialView("CreateIssue", CreateIssueModel(model, false)));
     }
     else if (model.IsModal)
     {
         return(Content("OK"));
     }
     else
     {
         return(RedirectToAction("Index", "Home"));
     }
 }
Esempio n. 25
0
        public async Task create_issue_command_fails_when_project_does_not_exist()
        {
            var projectId   = "projectKey";
            var epicId      = "epicKey";
            var issueId     = "issueKey";
            var title       = "Title";
            var description = "description";
            var type        = IssueType.Story;
            var status      = IssueStatus.TODO;
            var storypoints = 0;

            var command = new CreateIssue(issueId, type, status, title, description, storypoints, projectId, epicId, null, null, DateTime.Now);

            // Check if exception is thrown

            _commandHandler
            .Awaiting(c => c.HandleAsync(command))
            .Should().Throw <ProjectNotFoundException>();
        }
Esempio n. 26
0
        public async Task <IActionResult> Add([FromBody] CreateIssue model) //, List<IFormFile> files
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var previousVersion = issueManager.GetIssue(model.Id);
                    var newVersion      = await issueManager.SaveIssue(model, null);

                    var issueActivity = issueManager.SaveActivity(model, previousVersion, newVersion);

                    //if ((files != null) && (files.Any()))
                    //{
                    //    int fileCounter = 0;
                    //    foreach (var file in files)
                    //    {
                    //        // fileCounter = SaveAttachedDocument(model, result, fileCounter, file);
                    //    }
                    //}
                    if (model.IncludeIssueInResponse)
                    {
                        var newIssue = issueManager.GetIssue(newVersion.Id);
                        return(Json(new { Status = "Success", Data = newIssue }));
                    }

                    return(Json(new { Status = "Success" }));
                }
            }
            catch (MissingSettingsException mex)
            {
                return(Json(new { Status = "Error", Message = String.Format("You need to set a value for {0} first.", mex.MissingSettingName) }));
            }
            catch (Exception ex)
            {
                //  bErrorStore.LogException(ex, Request.HttpContext);

                return(Json(new { Status = "Error", Message = "Error saving issue" }));
            }


            return(View(model));
        }
Esempio n. 27
0
        private async Task <IssueView> CreateIssue(CreateIssue command, int previousCount)
        {
            var response = await _sut.Client.PostAsync("/api/Issues", command.ToJsonStringContent());

            response.EnsureSuccessStatusCode();
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var issues = await GetIssues();

            issues.Count.Should().Be(previousCount + 1);

            var issue = issues.Last();

            issue.Id.Should().NotBeEmpty();
            issue.Type.Should().Be(command.Type);
            issue.Title.Should().Be(command.Title);
            issue.Description.Should().Be(command.Description);

            return(issue);
        }
        public async Task <IssueDetailVM> SaveIssue(CreateIssue issue, List <IFormFile> files)
        {
            if (issue.SelectedProject == 0)
            {
                var defaultProject = await this.iProjectRepository.GetDefaultProjectForTeamMember(this.userSessionHelper.TeamId,
                                                                                                  this.userSessionHelper.UserId);

                if (defaultProject == null)
                {
                    throw new MissingSettingsException("Missing data", "Default project");
                }
                issue.SelectedProject = defaultProject.Id;
            }
            if (issue.SelectedCategory == 0)
            {
                var categories = this.issueRepository.GetCategories();
                issue.SelectedCategory = categories.First().Id;
            }
            if (issue.SelectedPriority == 0)
            {
                var categories = this.issueRepository.GetPriorities();
                issue.SelectedPriority = categories.First().Id;
            }
            if (issue.SelectedStatus == 0)
            {
                var statuses = this.issueRepository.GetStatuses();
                issue.SelectedStatus = statuses.First().Id;
            }
            issue.CreatedByID = this.userSessionHelper.UserId;
            issue.TeamID      = this.userSessionHelper.TeamId;
            var issueId = this.issueRepository.SaveIssue(issue);



            var issueDetail = this.issueRepository.GetIssue(issueId, this.userSessionHelper.UserId);

            return(issueDetail);

            ;
        }
        public async Task <IActionResult> CreateIssue([FromBody] CreateIssue model)
        {
            try
            {
                var issue = new Issue {
                    HandlerId        = model.HandlerId,
                    Customer         = model.Customer,
                    CreatedDate      = DateTime.Now,
                    ChangedDate      = model.ChangedDate,
                    IssueStatus      = model.IssueStatus,
                    IssueDescription = model.IssueDescription
                };


                _context.Issues.Add(issue);
                await _context.SaveChangesAsync();

                return(new OkResult());
            }
            catch { }
            return(new BadRequestResult());
        }
        private Activity SaveActivity(CreateIssue model, Issue existingIssue, Issue issuePreviousVersion, Status currentIssueStatus, int issueId, bool isNewIssue = false)
        {
            bool isStateChanged = false;
            var  activity       = new Activity()
            {
                CreatedByID = UserID, ObjectID = issueId, ObjectType = "Issue"
            };

            if (isNewIssue)
            {
                activity.ActivityDesc = "Created";
                activity.NewState     = model.Title;
                isStateChanged        = true;
            }
            else
            {
                if (issuePreviousVersion.StatusID != existingIssue.StatusID)
                {
                    // status of issue updated
                    activity.OldState     = model.Title;
                    activity.ActivityDesc = "Changed status";
                    activity.NewState     = currentIssueStatus.Name;
                    isStateChanged        = true;
                }
            }

            activity.TeamID = TeamID;

            if (isStateChanged)
            {
                var result = repo.SaveActivity(activity);
                if (!result.Status)
                {
                    log.Error(result);
                }
                return(repo.GetActivity(activity.ID));
            }
            return(null);
        }