public WorklogView(RefreshableWorklogViewModel parent, Issue issue, IIssueService issueService, IssueDetailViewModel refreshViewModel) { InitializeComponent(); this._viewModel = new WorklogViewModel(parent, issue, issueService, refreshViewModel); this.DataContext = this._viewModel; }
private async Task <ProjectViewModel> DownloadTimesheetImplAsync(RestApiServiceClient client, Period period, params string[] users) { var issuesRequest = BuildRequest(period, users); if (users.Length != 1) { throw new NotImplementedException(); } //NOTE: our jira search request return all issues that match our request, //but this issues also may include worklogs that are not in requested period or for requested author //worklogs must be filtered here to match user request var issuesWithWorklogs = await client.GetIssuesAsync(issuesRequest); //mapping models to view models var authorViewModel = new AuthorViewModel(users[0]); var issuesViewModels = new List <IssueViewModel>(); foreach (var issue in issuesWithWorklogs) { var issueViewModel = new IssueViewModel(issue); issueViewModel.Worklogs = issue.worklogs .Where(w => authorViewModel.Name.Equals(w.authorName, StringComparison.InvariantCultureIgnoreCase)) .Where(w => w.started.Date >= period.StartDate && w.started.Date <= period.EndDate) .Select(w => { var worklogViewModel = new WorklogViewModel(w) { Issue = issueViewModel, Author = authorViewModel }; return(worklogViewModel); }).ToList(); issuesViewModels.Add(issueViewModel); } var workDayViewModels = issuesViewModels.SelectMany(issue => issue.Worklogs) .GroupBy(w => w.StarteDate) .Select(g => new WorkDayViewModel { Worklogs = g.ToList() }) .ToList(); var projectViewModel = new ProjectViewModel(issuesViewModels, workDayViewModels, authorViewModel, period); return(projectViewModel); }
public ActionResult Edit(int projectId, int taskId, int id) { try { if (User.Identity.IsAuthenticated) { IWorklogLogic logic = container.Resolve <IWorklogLogic>(); var viewmodel = new WorklogViewModel(logic.HandleWorklogGet(projectId, taskId, id)); return(Json(viewmodel, JsonRequestBehavior.AllowGet)); } return(Json(new JsonDataHandler(httpCode: HttpCodeEnum.Forbidden).getWarning(), JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(new JsonDataHandler(ex).getError(), JsonRequestBehavior.AllowGet)); } }