Esempio n. 1
0
        private void InitializeViewModelsContainer()
        {
            TeamsViewModel teamsViewModel = new TeamsViewModel(this);

            teamsViewModel.TeamSelected += OnTeamSelected;

            AllTeamsViewModel allTeamsViewModel = new AllTeamsViewModel(this);
            // TODO: subscribe to AllTeamsViewModel events

            ProjectsViewModel projectsViewModel = new ProjectsViewModel(this);

            projectsViewModel.ProjectSelected += OnProjectSelected;

            ProductBacklogViewModel productBacklogViewModel = new ProductBacklogViewModel(this);
            SprintViewModel         sprintViewModel         = new SprintViewModel(this);
            AllUserTasksViewModel   allUserTasksViewModel   = new AllUserTasksViewModel(this);
            ReviewViewModel         reviewViewModel         = new ReviewViewModel(this);

            Logout.LogoutViewModel logoutViewModel = new Logout.LogoutViewModel(this);

            ContainerBuilder builder = new ContainerBuilder();

            builder.RegisterInstance(projectsViewModel);
            builder.RegisterInstance(teamsViewModel);
            builder.RegisterInstance(allTeamsViewModel);
            builder.RegisterInstance(productBacklogViewModel);
            builder.RegisterInstance(sprintViewModel);
            builder.RegisterInstance(allUserTasksViewModel);
            builder.RegisterInstance(reviewViewModel);
            builder.RegisterInstance(logoutViewModel);

            _viewModelsContainer = builder.Build();
        }
Esempio n. 2
0
        public static AllTasksForTeamViewModel Create(Business.Models.Team team,
                                                      bool isOwner,
                                                      List <Business.Models.Sprint> sprints,
                                                      List <Business.Models.Task> tasks)
        {
            var teamMemberViewModels = new List <TeamMemberViewModel>();
            var sprintViewModels     = new List <SprintViewModel>();
            var taskViewModels       = new List <TaskViewModel>();

            foreach (var teamMember in team.TeamMembers)
            {
                var teamMemberViewModel = TeamMemberViewModel.Create(teamMember);
                teamMemberViewModels.Add(teamMemberViewModel);
            }

            foreach (var sprint in sprints)
            {
                var sprintViewModel = SprintViewModel.Create(sprint, isOwner, 0);
                sprintViewModels.Add(sprintViewModel);
            }

            foreach (var task in tasks)
            {
                var taskViewModel = TaskViewModel.Create(task);
                taskViewModels.Add(taskViewModel);
            }

            return(new AllTasksForTeamViewModel(team, isOwner, teamMemberViewModels, sprintViewModels, taskViewModels));
        }
Esempio n. 3
0
        // GET: Sprints/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            SprintViewModel sprintViewModel = new SprintViewModel();

            sprintViewModel.Sprint = db.Sprints.Find(id);

            if (sprintViewModel.Sprint == null)
            {
                return(HttpNotFound());
            }

            List <Historia>       historiasDoSprint       = new List <Historia>();
            List <Historia>       llstHistorias           = db.Historias.AsNoTracking().ToList();
            List <SprintAuxiliar> historiasSprintAtualAux = db.SprintAuxiliar.AsNoTracking().Where(c => c.SprintId == sprintViewModel.Sprint.Id).ToList();

            historiasSprintAtualAux.ForEach(historiaAux =>
            {
                sprintViewModel.ScrumBoardViewModel.HistoriasDoSprint.Add(llstHistorias.Where(c => c.Id == historiaAux.HistoriaId).SingleOrDefault());
            });

            sprintViewModel.ScrumBoardViewModel.Historias = llstHistorias.Where(c => c.DataTermino == null).Except(sprintViewModel.ScrumBoardViewModel.HistoriasDoSprint).ToList();

            return(View(sprintViewModel));
        }
        public async Task <IActionResult> AddSprintAsync(SprintViewModel sprintViewModel)
        {
            if (ModelState.IsValid)
            {
                var sprints = await _manageSprintsService.GetAllSprintsAsync(sprintViewModel.TeamId, new DisplayOptions());

                var sprint = new Sprint
                {
                    TeamId            = sprintViewModel.TeamId,
                    Name              = sprintViewModel.Name,
                    DaysInSprint      = sprintViewModel.DaysInSprint,
                    StoryPointInHours = sprintViewModel.StoryPointInHours
                };

                var result = await AddSprintAsync(sprint);

                if (result)
                {
                    return(RedirectToAction("AllSprints", new { teamId = sprintViewModel.TeamId }));
                }
                else
                {
                    return(RedirectToAction("NotOwnerError", new { teamId = sprintViewModel.TeamId }));
                }
            }

            return(View(sprintViewModel));
        }
Esempio n. 5
0
        public async Task <IActionResult> GetSprintById(int sprintId)
        {
            var sprint = await _manageSprintsService.GetSprintAsync(sprintId, true);

            if (sprint == null)
            {
                return(View("ErrorGetAllSprints"));
            }

            var sprintViewModel = new SprintViewModel()
            {
                DaysInSprint      = sprint.DaysInSprint,
                Id                = sprint.Id,
                Tasks             = CreateTaskViewModels(sprint.Tasks),
                Status            = sprint.Status,
                Name              = sprint.Name,
                StoryPointInHours = sprint.StoryPointInHours,
                TeamId            = sprint.TeamId
            };

            sprintViewModel.TotalStoryPoint   = sprint.Tasks.Count > 0 ? sprint.Tasks.Sum(t => t.StoryPoints) : 0;
            sprintViewModel.AverageStoryPoint = await _manageSprintsService.GetAverageStoryPointAsync(sprint);

            if (await _accessCheckService.IsOwnerAsync(sprint.TeamId))
            {
                sprintViewModel.IsOwner = true;
            }
            else
            {
                sprintViewModel.IsOwner = false;
            }


            return(View(sprintViewModel));
        }
Esempio n. 6
0
        public SprintMenu()
        {
            InitializeComponent();

            svm = new SprintViewModel();

            this.DataContext = svm;
        }
Esempio n. 7
0
        public async Task <IActionResult> Post(SprintViewModel data)
        {
            data.Completed = false;
            var content = JsonConvert.SerializeObject(data);

            await http.PostAsync("http://localhost:62021/api/sprint", new StringContent(content, Encoding.UTF8, "application/json"));

            return(Redirect("/sprint"));
        }
        public ActionResult CreateSprint(Guid id)
        {
            var model = new SprintViewModel()
            {
                ProjectId = id
            };

            return(View(model));
        }
Esempio n. 9
0
        public ActionResult SetupSprint(SprintViewModel model)
        {
            if (model != null)
            {
                return(View());
            }

            ViewBag.ErrorMsg = "An error ocurred";
            return(View("Error"));
        }
        public ActionResult EditSprint(Guid sprintid, Guid projectId)
        {
            var model = new SprintViewModel()
            {
                ProjectId = projectId,
                Sprint    = _sprintService.FindById(sprintid)
            };

            return(View(model));
        }
Esempio n. 11
0
        public async Task <IActionResult> AddSprintAsync(SprintViewModel sprintViewModel)
        {
            if (ModelState.IsValid)
            {
                sprintViewModel.Status = PossibleStatuses.CreatedStatus;
                var sprints = await _manageSprintsService.GetAllSprintsAsync(sprintViewModel.TeamId, new DisplayOptions());

                var activeSprint = sprints.FirstOrDefault(i => i.Status == PossibleStatuses.ActiveStatus);

                if (activeSprint != null && sprintViewModel.Status == PossibleStatuses.ActiveStatus)
                {
                    return(RedirectToAction("AddSprint", new { teamId = sprintViewModel.TeamId, errorMessage = _localizer["ActiveFieldError"] }));
                }

                var createdSprint = sprints.FirstOrDefault(i => i.Status == PossibleStatuses.CreatedStatus);

                if (createdSprint != null && sprintViewModel.Status == PossibleStatuses.CreatedStatus)
                {
                    return(RedirectToAction("AddSprint", new { teamId = sprintViewModel.TeamId, errorMessage = _localizer["СreatedSprintExist"] }));
                }

                var sameSprint = sprints.FirstOrDefault(i => i.Name == sprintViewModel.Name);

                if (sameSprint != null)
                {
                    return(RedirectToAction("AddSprint", new { teamId = sprintViewModel.TeamId, errorMessage = _localizer["SprintWithSameName"] }));
                }

                var newSprint = new Sprint
                {
                    TeamId            = sprintViewModel.TeamId,
                    Name              = sprintViewModel.Name,
                    DaysInSprint      = sprintViewModel.DaysInSprint,
                    StoryPointInHours = sprintViewModel.StoryPointInHours,
                    Status            = sprintViewModel.Status
                };

                var result = await AddSprintAsync(newSprint);


                if (result && sprintViewModel.SelectTasksIds != null &&
                    await UpdateTasks(sprintViewModel.SelectTasksIds, newSprint.Id))
                {
                    return(RedirectToAction("AllSprints", new { teamId = sprintViewModel.TeamId }));
                }
                else
                {
                    return(RedirectToAction("NotOwnerError", new { teamId = sprintViewModel.TeamId }));
                }
            }
            else
            {
                return(View(sprintViewModel));
            }
        }
        public ActionResult Create([Bind(Include = "Sprint,Tasks")] SprintViewModel sprintVM)
        {
            if (ModelState.IsValid)
            {
                var isSprintValid = DbEntityValidator.CheckSprint(sprintVM.Sprint);
                if (!string.IsNullOrEmpty(isSprintValid))
                {
                    return(FailedAction(isSprintValid, sprintVM));
                }

                foreach (var task in sprintVM.Tasks)
                {
                    var isTaskValid = DbEntityValidator.CheckTask(task);
                    if (!string.IsNullOrEmpty(isTaskValid))
                    {
                        return(FailedAction(isTaskValid, sprintVM));
                    }
                }

                var sprint = new Sprint
                {
                    ProjectID           = ApplicationState.Instance.CurrentProjectID,
                    StartDate           = sprintVM.Sprint.StartDate,
                    EstimatedFinishDate = sprintVM.Sprint.EstimatedFinishDate,
                    Description         = sprintVM.Sprint.Description,
                    Milestone           = sprintVM.Sprint.Milestone,
                    Name             = sprintVM.Sprint.Name,
                    ActualFinishDate = null
                };
                dbContext.Sprints.Add(sprint);
                dbContext.SaveChanges();

                var activityDescription = ApplicationState.Instance.CurrentUser.FirstName + " "
                                          + ApplicationState.Instance.CurrentUser.LastName
                                          + " created new sprint - " + sprint.Name;
                new ActivityMonitorUpdater(dbContext).WriteToDatabase(activityDescription, ApplicationState.Instance.CurrentProjectID);

                var tasks = new List <Task>();
                foreach (var task in sprintVM.Tasks)
                {
                    task.SprintID       = sprint.ID;
                    activityDescription = ApplicationState.Instance.CurrentUser.FirstName + " "
                                          + ApplicationState.Instance.CurrentUser.LastName
                                          + " created new task - " + task.Summary;
                    new ActivityMonitorUpdater(dbContext).WriteToDatabase(activityDescription, ApplicationState.Instance.CurrentProjectID);
                }
                dbContext.Tasks.AddRange(sprintVM.Tasks);
                dbContext.SaveChanges();

                return(RedirectToAction("Index", "Program"));
            }
            return(FailedAction("Sprint is not valid, please check all fields", sprintVM));
        }
Esempio n. 13
0
        public ActionResult CreateSprint(SprintViewModel sprint)
        {
            //var idProject =
            var client  = new RestClient(Constant.CreateSprintAsync);
            var request = new RestRequest(Method.POST)
                          .AddParameter("Name", sprint.Name)
                          .AddParameter("IdProject", Session["idProject"]);

            client.Execute(request);

            return(RedirectToAction("ProjectDetail", new { id = Session["idProject"] }));
        }
Esempio n. 14
0
        public async Task <IActionResult> AddSprintAsync(int teamId, string errorMessage)
        {
            var team = await _manageSprintsService.GetTeam(teamId);

            var sprintViewModel = new SprintViewModel()
            {
                Id = teamId, Name = team.TeamName
            };

            ViewBag.ErrorMessage = errorMessage;

            return(View(sprintViewModel));
        }
Esempio n. 15
0
        public async Task <IActionResult> GetSprintById(int sprintId)
        {
            var sprint = await _manageSprintsService.GetSprintAsync(sprintId, true);

            if (sprint == null)
            {
                return(View("ErrorGetAllSprints"));
            }

            var sprintViewModel = new SprintViewModel()
            {
                DaysInSprint      = sprint.DaysInSprint,
                Id                = sprint.Id,
                Tasks             = new List <TaskViewModel>(),
                Status            = sprint.Status,
                Name              = sprint.Name,
                StoryPointInHours = sprint.StoryPointInHours,
                TeamId            = sprint.TeamId
            };

            sprint.Tasks.ToList().ForEach(t => sprintViewModel.Tasks.Add(new TaskViewModel()
            {
                TeamMember = t.MemberId != null ? new TeamMemberViewModel()
                {
                    Member = t.TeamMember.Member, MemberId = t.MemberId.ToString()
                } : null,
                Name        = t.Name,
                StoryPoints = t.StoryPoints,
                Id          = t.Id,
                Link        = t.Link,
                Completed   = t.Completed
            }
                                                                         ));
            sprintViewModel.TotalStoryPoint   = sprint.Tasks.Count > 0 ? sprint.Tasks.Sum(t => t.StoryPoints) : 0;
            sprintViewModel.AverageStoryPoint = await _manageSprintsService.GetAverageStoryPointAsync(sprint);

            if (await _accessCheckService.IsOwnerAsync(sprint.TeamId))
            {
                sprintViewModel.IsOwner = true;
            }
            else
            {
                sprintViewModel.IsOwner = false;
            }


            return(View(sprintViewModel));
        }
Esempio n. 16
0
        public async Task <IActionResult> GetSprintById(int sprintId)
        {
            var sprint = await _manageSprintsService.GetSprintAsync(sprintId, true);

            if (sprint == null)
            {
                return(View("ErrorGetAllSprints"));
            }

            var sprintViewModel = new SprintViewModel()
            {
                DaysInSprint      = sprint.DaysInSprint,
                Id                = sprint.Id,
                Tasks             = new List <TaskViewModel>(),
                Status            = sprint.Status,
                Name              = sprint.Name,
                StoryPointInHours = sprint.StoryPointInHours,
                TeamId            = sprint.TeamId
            };

            sprint.Tasks.ToList().ForEach(t => sprintViewModel.Tasks.Add(new TaskViewModel()
            {
                TeamMember = new TeamMemberViewModel()
                {
                    Member = t.TeamMember.Member, MemberId = t.MemberId.ToString()
                },
                Name        = t.Name,
                StoryPoints = t.StoryPoints,
                Id          = t.Id,
                Link        = t.Link,
                Completed   = t.Completed
            }
                                                                         ));

            if (await _accessCheckService.IsOwnerAsync(sprint.TeamId))
            {
                ViewBag.AddVision = "visible";
            }
            else
            {
                ViewBag.AddVision = "collapse";
            }


            return(View(sprintViewModel));
        }
Esempio n. 17
0
        public ActionResult IndexSprint(int projectId, int sprintNo)
        {
            var existProject = new Project();

            existProject = db.Projects.FirstOrDefault(x => x.ProjectId == projectId);
            var sprintModel = new SprintViewModel
            {
                ProjectId            = projectId,
                ProjectCurrentSprint = existProject.CurrentSprintNo,
                SprintCount          = ProjectRepository.GetSprintCount(projectId),
                SprintNo             = sprintNo,
                SprintBacklogs       = ProjectRepository.GetSprintBacklogs(projectId, sprintNo)
            };



            return(View(sprintModel));
        }
        public CreateUserStoryPage()
        {
            this.InitializeComponent();

            var cmbtype = new UserStoryTypeViewModel();

            cmb_type.ItemsSource = cmbtype.UserStoryTypes;


            var cmbsprint = new SprintViewModel();

            cmb_sprint.ItemsSource = cmbsprint.Sprints;

            var cmbstatus = new ScrumStageViewModel();

            cmb_status.ItemsSource = cmbstatus.ScrumStages;

            this.navigationHelper            = new NavigationHelper(this);
            this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
            this.navigationHelper.SaveState += this.NavigationHelper_SaveState;
        }
Esempio n. 19
0
        public async Task <IActionResult> AddSprintAsync(int teamId, string errorMessage)
        {
            var team = await _manageSprintsService.GetTeam(teamId);

            ViewBag.ErrorMessage = errorMessage;

            var tasks = (await _manageTasksService.GetAllTasksForTeamAsync(teamId, new DisplayOptions()))
                        .Where(task => task.SprintId == null && task.Completed == false);

            var sprint = Sprint.Create(teamId, tasks.ToList());

            var isOwner = false;

            if (await _accessCheckService.IsOwnerAsync(teamId))
            {
                isOwner = true;
            }

            var sprintViewModel = SprintViewModel.Create(sprint, isOwner, 0);

            return(View(sprintViewModel));
        }
Esempio n. 20
0
        public async Task <IActionResult> GetSprintById(int sprintId)
        {
            var sprint = await _manageSprintsService.GetSprintAsync(sprintId, true);

            if (sprint == null)
            {
                return(View("ErrorGetAllSprints"));
            }

            var isOwner = false;

            if (await _accessCheckService.IsOwnerAsync(sprint.TeamId))
            {
                isOwner = true;
            }


            var averageStoryPoint = await _manageSprintsService.GetAverageStoryPointAsync(sprint);

            var sprintViewModel = SprintViewModel.Create(sprint, isOwner, averageStoryPoint);

            return(View(sprintViewModel));
        }
Esempio n. 21
0
        public static TaskFormViewModel Create(Business.Models.Task task,
                                               string errorMessage,
                                               List <Business.Models.TeamMember> teamMembers,
                                               List <Business.Models.Sprint> sprints)
        {
            var    teamMember           = teamMembers.FirstOrDefault(t => t.Id == task.MemberId);
            var    teamMemberViewModels = new List <TeamMemberViewModel>();
            string taskMemberName;

            if (teamMember != null)
            {
                taskMemberName = teamMember.Member.UserName;
            }
            else
            {
                taskMemberName = "";
            }

            foreach (var member in teamMembers)
            {
                if (member != null)
                {
                    var teamMemberViewModel = TeamMemberViewModel.Create(member);
                    teamMemberViewModels.Add(teamMemberViewModel);
                }
            }

            var sprintViewModels = new List <SprintViewModel>();

            foreach (var sprint in sprints)
            {
                var sprintViewModel = SprintViewModel.Create(sprint, false, 0);
                sprintViewModels.Add(sprintViewModel);
            }

            return(new TaskFormViewModel(task, taskMemberName, errorMessage, teamMemberViewModels));
        }
Esempio n. 22
0
        public async Task <IActionResult> AddSprintAsync(int teamId, string errorMessage)
        {
            var team = await _manageSprintsService.GetTeam(teamId);

            var sprintViewModel = new SprintViewModel()
            {
                Id = teamId, Name = team.TeamName, Tasks = new List <TaskViewModel>()
            };

            ViewBag.ErrorMessage = errorMessage;

            var tasks = (await _manageTasksService.GetAllTasksForTeamAsync(teamId, new DisplayOptions())).Where(task => task.SprintId == null && task.Completed == false);

            tasks.ToList().ForEach(t => sprintViewModel.Tasks.Add(new TaskViewModel()
            {
                Name = t.Name,
                Id   = t.Id
            }
                                                                  ));

            sprintViewModel.SelectTasks = await SelectTasks(teamId);

            return(View(sprintViewModel));
        }
        public ActionResult EditSprint(SprintViewModel model)
        {
            var userId = User.Identity.GetUserId();

            if (userId == null)
            {
                return(RedirectToAction("Login", "Profile"));
            }

            var user = _applicationUserManager.FindById(userId);

            if (user == null)
            {
                return(RedirectToAction("Login", "Profile"));
            }

            if (ModelState.IsValid)
            {
                _sprintService.Update(model.Sprint);
                return(RedirectToAction("Details", new { id = model.ProjectId }));
            }

            return(View());
        }
Esempio n. 24
0
 public AddSprintCommand(SprintViewModel sprint)
 {
     Sprint = sprint;
 }
Esempio n. 25
0
 public Sprint(IHttpClient client, string sprintId, string projectId)
 {
     DataContext = new SprintViewModel(client, sprintId, projectId);
     InitializeComponent();
 }
Esempio n. 26
0
 public SprintView()
 {
     this.InitializeComponent();
     sprintViewModel = new SprintViewModel();
     DataContext = sprintViewModel;
 }
Esempio n. 27
0
 public UpdateSprintCommand(SprintViewModel sprint)
 {
     Sprint = sprint;
 }
Esempio n. 28
0
 public async Task <IActionResult> Put([FromBody] SprintViewModel model)
 {
     return(Ok(await _mediator.Send(new UpdateSprintCommand(model))));
 }
 private ViewResult FailedAction(string message, SprintViewModel sprintVM)
 {
     TempData[Constants.NOTICE] = message;
     sprintVM.Tasks             = new List <Task>();
     return(View(sprintVM));
 }
Esempio n. 30
0
        public ActionResult ViewProject(int id)
        {
            var project = _dataManager.FindProjectById(id);


            if (project == null)
            {
                return(HttpNotFound());
            }

            var userId         = HttpContext.User.Identity.GetUserId();
            var userAccessList = _dataManager.GetUserAccessOnProject(id);

            bool isOwner   = userId.Equals(project.OwnerId);
            bool hasAccess = userAccessList.Any(access => access.UserId.Equals(userId));

            if (!isOwner &&
                !hasAccess)
            {
                //TODO: Update to display error that the user does not have access to the project
                return(HttpNotFound());
            }

            List <ReferenceTaskViewModel> taskList = new List <ReferenceTaskViewModel>();

            foreach (var taskModel in project.TaskList)
            {
                if (taskModel.SprintId == null || taskModel.SprintId == 0)
                {
                    ReferenceTaskViewModel taskReference = new ReferenceTaskViewModel()
                    {
                        Id   = taskModel.Id,
                        Name = taskModel.Name
                    };
                    if (taskModel.Status.Equals(TaskState.Finished))
                    {
                        taskReference.IsCompleted = true;
                    }

                    taskList.Add(taskReference);
                }
            }

            List <SprintViewModel> sprintList = new List <SprintViewModel>();

            foreach (var sprintModel in project.SprintList)
            {
                SprintViewModel model = Mapper.Map <SprintViewModel>(sprintModel);

                int openTasks              = 0;
                int workingTask            = 0;
                int finishedTasks          = 0;
                int percentageOfCompletion = 0;
                try
                {
                    //TODO  see why what is the problem and why the respons is 0 0 0
                    model.Tasks.ForEach(task =>
                    {
                        TaskModel currentTask = project.TaskList.Find(taskModel => taskModel.Id == task.Id);

                        if (currentTask.Status != null)
                        {
                            if (currentTask.Status.Equals(TaskState.Open))
                            {
                                openTasks++;
                            }
                            else if (currentTask.Status.Equals(TaskState.Working) ||
                                     currentTask.Status.Equals(TaskState.Review))
                            {
                                workingTask++;
                            }
                            else if (currentTask.Status.Equals(TaskState.Finished))
                            {
                                task.IsCompleted = true;
                                finishedTasks++;
                            }
                        }
                    });
                    int totalNumberOfTasks = openTasks + workingTask + finishedTasks;
                    percentageOfCompletion = finishedTasks * 100 / totalNumberOfTasks;
                }
                catch
                {
                    Console.WriteLine("Failed to calculate  sprint task status for project " + project.Name);
                }

                model.OpenTasks              = openTasks;
                model.WorkingTasks           = workingTask;
                model.FinishedTasks          = finishedTasks;
                model.PercentageOfCompletion = percentageOfCompletion;

                sprintList.Add(model);
            }


            ProjectViewModel viewModel = new ProjectViewModel()
            {
                Name       = project.Name,
                Id         = project.Id,
                OwnerId    = project.OwnerId,
                TaskList   = taskList,
                SprintList = sprintList
            };


            return(View("ViewProject", viewModel));
        }
Esempio n. 31
0
        public async Task <IActionResult> AddTaskIntoTeamAsync(TaskFormViewModel taskFormViewModel)
        {
            if (ModelState.IsValid)
            {
                if (taskFormViewModel.LinkValidation == null && !Regex.IsMatch(taskFormViewModel.TaskLink,
                                                                               @"^(?:http(s):\/\/)(github\.com\/)|(bitbucket\.org\/)[\w\d\S]+(\/[\w\d\S]+)*$"))
                {
                    return(RedirectToAction("AddTaskIntoTeam", new { teamId = taskFormViewModel.TeamId,
                                                                     errorMessage = _localizer["LinkFieldError"] }));
                }
                else if (taskFormViewModel.LinkValidation != null && !Regex.IsMatch(taskFormViewModel.TaskLink,
                                                                                    @"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$"))
                {
                    return(RedirectToAction("AddTaskIntoTeam", new { teamId = taskFormViewModel.TeamId,
                                                                     errorMessage = _localizer["LinkFieldError"] }));
                }

                var task = Business.Models.Task.Create(taskFormViewModel.TaskId,
                                                       taskFormViewModel.TeamId,
                                                       null,
                                                       taskFormViewModel.TaskName,
                                                       taskFormViewModel.TaskStoryPoints,
                                                       taskFormViewModel.TaskLink,
                                                       taskFormViewModel.TaskSprintId,
                                                       taskFormViewModel.TaskMemberId);

                var isOwner = await _accessCheckService.IsOwnerAsync(task.TeamId);

                if (!isOwner)
                {
                    return(RedirectToAction("NotOwnerError", new { teamId = taskFormViewModel.TeamId }));
                }

                var result = await _manageTasksService.AddTaskAsync(task);

                if (result)
                {
                    return(RedirectToAction("GetSprintById", "ManageSprints", new { sprintId = taskFormViewModel.TaskSprintId }));
                }

                else
                {
                    return(RedirectToAction("AddTaskError", new { teamId = taskFormViewModel.TeamId }));
                }
            }

            var teamMembers = await GetAllTeamMembersAsync(taskFormViewModel.TeamId);

            var teamSprints = await _manageSprintsService.GetAllSprintsAsync(taskFormViewModel.TeamId, new DisplayOptions());

            taskFormViewModel.TeamMembers = new List <TeamMemberViewModel>();
            foreach (var teamMember in teamMembers)
            {
                var teamMemberViewModel = TeamMemberViewModel.Create(teamMember);
                taskFormViewModel.TeamMembers.Add(teamMemberViewModel);
            }

            taskFormViewModel.Sprints = new List <SprintViewModel>();

            foreach (var teamSprint in teamSprints)
            {
                var sprintViewModel = SprintViewModel.Create(teamSprint, false, 0);
                taskFormViewModel.Sprints.Add(sprintViewModel);
            }

            return(View(taskFormViewModel));
        }