Beispiel #1
0
        public IActionResult UpdateReport(int id, int reportId, [FromBody] ReportDTO reportDtoDto)
        {
            var buildingId       = new BuildingId(id);
            var reportRepository = ReportRepository(buildingId);

            if (!reportRepository.Exists(reportId))
            {
                return(NotFound());
            }

            var report = new BubelSoft.Building.Domain.Models.Report(reportId, reportDtoDto.Date, reportDtoDto.NumberOfWorkers, _userSession.User.Id, buildingId);

            if (!_reportAccessRules.CanAccess(report, _userSession.User.Id))
            {
                return(Forbid());
            }

            foreach (var reportQuantity in reportDtoDto.Work)
            {
                report.AddOrUpdateWork(reportQuantity.EstimationId, reportQuantity.Quantity);
            }

            reportRepository.Save(report);
            return(Ok());
        }
Beispiel #2
0
        public void GetReport_Ok_ReportIfReportsExistsAnd()
        {
            const int reportId = 19;
            var       report   = new Report(reportId, DateTime.Now, 1, new UserId(1), new BuildingId(2));

            _reportsRepository.Get(reportId, Arg.Any <BuildingId>()).Returns(report);
            _reportAccessRules.CanAccess(report, Arg.Any <UserId>()).Returns(true);

            var response = _reportsController.GetReport(12, reportId);

            Assert.That(response, Is.TypeOf <OkObjectResult>());
        }
Beispiel #3
0
        public void GetReport_Forbidden_ReportExistsButUserHasNoAccess()
        {
            const int reportId = 19;
            var       report   = new Report(reportId, DateTime.Now, 1, new UserId(1), new BuildingId(2));

            _reportsRepository.Get(reportId, Arg.Any <BuildingId>()).Returns(report);
            _reportAccessRules.CanAccess(report, Arg.Any <UserId>()).Returns(false);

            var response = _reportsController.GetReport(12, reportId);

            Assert.That(response, Is.TypeOf <ForbidResult>());
        }
Beispiel #4
0
        public IActionResult CreateReport(int id, [FromBody] ReportDTO reportDtoDto)
        {
            var buildingId       = new BuildingId(id);
            var reportRepository = ReportRepository(buildingId);

            var report = new BubelSoft.Building.Domain.Models.Report(reportDtoDto.Date, reportDtoDto.NumberOfWorkers, _userSession.User.Id, buildingId);

            foreach (var reportQuantity in reportDtoDto.Work)
            {
                report.AddOrUpdateWork(reportQuantity.EstimationId, reportQuantity.Quantity);
            }

            reportRepository.Save(report);
            return(Ok(report.Id));
        }