public async Task <Result> Report(ReportAccommodationDuplicateRequest duplicateRequest, AgentContext agent) { var now = _dateTimeProvider.UtcNow(); return(await Validate(duplicateRequest) .Map(SaveReport) .Tap(AddDuplicateRecords) .Tap(ResetCacheForAgent));
static Result Validate(ReportAccommodationDuplicateRequest duplicateRequest) { return(GenericValidator <ReportAccommodationDuplicateRequest> .Validate(v => { v.RuleFor(r => r.Duplicates).NotEmpty(); v.RuleForEach(r => r.Duplicates.Union(new[] { r.Accommodation })) .ChildRules(d => { d.RuleFor(d => d.Id).NotEmpty(); d.RuleFor(d => d.Supplier).IsInEnum(); d.RuleFor(d => d.Supplier) .Must(p => p != Suppliers.Unknown) .WithMessage("Provider code is required"); }) .OverridePropertyName("Accommodations"); }, duplicateRequest)); }
public async Task <IActionResult> AddDuplicateReport([FromBody] ReportAccommodationDuplicateRequest request) { var agent = await _agentContextService.GetAgent(); return(OkOrBadRequest(await _duplicatesService.Report(request, agent))); }