示例#1
0
        public async Task <Guid> AddAsync(SummaryDocument doc)
        {
            var existing = await TryGetSummaryEntityForInspectionAsync(doc.InspectionId);

            if (existing != null)
            {
                throw ItemAlreadyExistsException.MatchingEntityExists("RusHydroPsaSummary", existing.Id);
            }
            if (doc.Id == Guid.Empty)
            {
                doc.Id = Guid.NewGuid();
            }
            var shiftAbsIndex = WorkingShiftAbsoluteIndex.GetAbsoluteIndex(doc.CompletionTime.LocalDateTime);
            var deptReportId  = DepartmentShiftReportIdBuilder.BuildReportId(doc.DepartmentId, shiftAbsIndex);
            var summary       = new Summary
            {
                Id = doc.Id,
                DepartmentShiftReportId = deptReportId,
                ShiftAbsoluteIndex      = shiftAbsIndex,
                BranchOfficeId          = doc.BranchOfficeId,
                CompletionTime          = doc.CompletionTime,
                DepartmentId            = doc.DepartmentId,
                EmployeeId      = doc.Employee.Id,
                InspectionId    = doc.InspectionId,
                SummaryDocument = doc,
                TenantId        = _tenantIdProvider.GetTenantId(),
                UpdateDate      = doc.UpdateDate
            };

            _psaSummaryRepository.Add(summary);
            await _psaSummaryRepository.SaveChangesAsync();

            return(summary.Id);
        }
        protected override async Task CheckNewItemIsUnique(Inspection value)
        {
            var existing = await Repository.GetSingleOrDefaultAsync(
                i => i.StartTime == value.StartTime &&
                i.EmployeeId == value.EmployeeId
                );

            if (existing != null)
            {
                throw ItemAlreadyExistsException.MatchingEntityExists(nameof(Inspection), existing.Id);
            }
        }
        public async override Task <Guid> AddAsync(Test test)
        {
            var existing = await Repository.GetSingleOrDefaultAsync(
                i => i.StartTime == test.StartTime &&
                i.EmployeeId == test.EmployeeId
                );

            if (existing != null)
            {
                throw ItemAlreadyExistsException.MatchingEntityExists(nameof(Test), existing.Id);
            }
            return(await base.AddAsync(test));
        }