public async Task <IActionResult> CreateReport(EditReportModel model) { if (ModelState.IsValid) { var entity = new Report(); model.CopyTo(entity); entity.ReportId = Guid.NewGuid(); entity.SolutionId = SolutionId.Value; entity.CreatedBy = CurrentUser.SystemUserId; entity.EntityId = model.EntityId; entity.RelatedEntityId = model.RelatedEntityId; if (model.ReportFile != null && model.ReportFile.Length > 0) { entity.FileName = model.ReportFile.FileName; int fsLen = (int)model.ReportFile.Length; byte[] heByte = new byte[fsLen]; using (Stream s = new MemoryStream()) { await model.ReportFile.CopyToAsync(s).ConfigureAwait(false); await s.ReadAsync(heByte, 0, heByte.Length).ConfigureAwait(false); string bodytext = System.Text.Encoding.UTF8.GetString(heByte); entity.BodyText = bodytext; } } _reportService.Create(entity); return(CreateSuccess(new { id = entity.ReportId })); } return(CreateFailure(GetModelErrors())); }
public IActionResult CreateReport() { EditReportModel model = new EditReportModel { SolutionId = SolutionId.Value }; return(View(model)); }
public async Task <HttpResponseMessage> Add([FromBody] EditReportModel model) { Log.Out.BeginInfo(model.ToJson(), "AddReport"); int userId = UserHelper.GetId(); model.CreatedBy = userId; model.ModifiedBy = userId; var id = await Service.Get <IReportService>().AddReport(model); Log.Out.EndInfo("AddReport Id: {0}", id); return(Request.CreateResponse(HttpStatusCode.OK, new { Id = id })); }
public IActionResult EditReport(Guid id) { EditReportModel model = new EditReportModel(); if (!id.Equals(Guid.Empty)) { var entity = _reportService.FindById(id); if (entity != null) { entity.CopyTo(model); model.ReportId = id; return(View(model)); } } return(NotFound()); }
public IActionResult Edit(int id) { var reportResult = _storage.GetReport(id); if (!reportResult.IsSuccess) { return(Error("Ошибка обращения к БД!", reportResult.Error.Message)); } var projectName = reportResult.Result.ProjectName; var users = _timeTrackingService.GetAllUsers(projectName); if (users == null) { return(Error("Ошибка обращения к сервису трекинга!", $"Не удалось получить список пользователей проекта \"{projectName}\".")); } var usersInIssues = reportResult.Result.Issues .Select(i => i.AssigneeName) .ToHashSet(); var selectedUsers = new bool[users.Length]; for (int i = 0; i < users.Length; i++) { selectedUsers[i] = usersInIssues.Contains(users[i]); } var model = new EditReportModel() { ReportId = id, ProjectName = projectName, AllUsers = users, SelectedUsers = selectedUsers, ReportName = reportResult.Result.Name, IssueFilter = reportResult.Result.IssueFilter }; return(View(model)); }
public IActionResult ProcessEdit(EditReportModel model) { if (!ModelState.IsValid) { if (String.IsNullOrEmpty(model.ReportName)) { return(Error("Ошибка редактирования отчета!", "Название отчета должно быть не нулевым!")); } if (model.ReportName?.Length > 100) { return(Error("Ошибка редактирования отчета!", "Название отчета должно быть не длиннее 100 символов!")); } if (model.IssueFilter?.Length > 1000) { return(Error("Ошибка редактирования отчета!", "Фильтр должен быть не длиннее 1000 символов!")); } return(Error("Ошибка редактирования отчета!")); } // Get report var reportResult = _storage.GetReport(model.ReportId); if (!reportResult.IsSuccess) { return(Error("Ошибка обращения к БД!", reportResult.Error.Message)); } // Check is name unique if (reportResult.Result.Name != model.ReportName) { var isContains = _storage.ContainsReport(model.ReportName); if (!isContains.IsSuccess) { return(Error("Ошибка обращения к БД!", isContains.Error.Message)); } if (isContains.Result) { return(Error("Ошибка редактирования отчета!", "Название отчета должно быть уникальным!")); } } // Get issues var issueFilter = model.IssueFilter == null ? "" : model.IssueFilter; var issues = _timeTrackingService.GetIssues(reportResult.Result.ProjectName, model.IssueFilter); // Change time mode if (model.IsWorkItems) { foreach (var issue in issues) { issue.SetTimeByWorkItems(); } } // Filter by selected users if (model.SelectedUsers != null) { var users = model.AllUsers .Zip(model.SelectedUsers) .Where(i => i.Second) .Select(i => i.First) .ToHashSet(); issues = issues .Where(i => users.Contains(i.AssigneeName)) .ToList(); } // Save new report var newReport = new Report(reportResult.Result.Name, reportResult.Result.ProjectName, model.IssueFilter, issues); reportResult = _storage.EditReport(reportResult.Result.ReportId, newReport); if (!reportResult.IsSuccess) { return(Error("Ошибка обращения к БД!", reportResult.Error.Message)); } // Get charts var charts = _chartService.GetAllCharts(); foreach (var chart in charts.Values) { chart.SetData(reportResult.Result.Issues, 5); } return(View("Show", new ChartModel(reportResult.Result.ReportId, charts.Values.ToList()))); }
public Task <int> AddReport(EditReportModel model) { return(Add <Report, IReportRepository>(entity => entity.Id, model.GetEntity)); }