예제 #1
0
        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()));
        }
예제 #2
0
        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 }));
        }
예제 #4
0
        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());
        }
예제 #5
0
        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));
        }
예제 #6
0
        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));
 }