public static Result <SubjectId> Create(long subjectId, ISubjectExistenceValidator subjectExistenceValidator) { return(Result.Create(() => subjectId > 0, DomainErrors.BuildInvalidIdentifier(subjectId)) .AndEnsure(() => subjectExistenceValidator.Exist(subjectId), DomainErrors.BuildNotFound("Subject", subjectId)) .OnSuccess(() => new SubjectId(subjectId))); }
public static Result <LocationId> Create(long locationId, ILocationExistenceValidator locationExistenceValidator) { return(Result.Create(locationId > 0, DomainErrors.BuildInvalidIdentifier(locationId)) .AndEnsure(() => locationExistenceValidator.Exist(locationId), DomainErrors.BuildNotFound("Location", locationId)) .OnSuccess(() => new LocationId(locationId))); }
public void ShouldReturnExpectedErrorForNotFound() { var entity = "Location"; var identifier = 7; var notFoundError = DomainErrors.BuildNotFound(entity, identifier); notFoundError.Message.Should().Be($"{entity} for provided identifier {identifier} does not exist"); }
public async Task <Result <ExamDto> > Handle(GetExamQuery request, CancellationToken cancellationToken) { //TODO: Dapper is not mapping dates as UTC, but as Unspecified var exam = await _dbConnection.QuerySingleAsync <ExamDto>(_queryBuilder.SingleExamQuery(), new { id = request.Id }); return(exam == null ? Result.Fail <ExamDto>(DomainErrors.BuildNotFound("Exam", request.Id)) : Result.Ok(exam)); }
public async Task <Result <RegistrationDto> > Handle(GetRegistrationQuery request, CancellationToken cancellationToken) { var registration = await _dbConnection.QuerySingleAsync <RegistrationDto>(BuildQuery(), new { id = request.Id }); return(registration != null ? Result.Ok(registration) : Result.Fail <RegistrationDto>(DomainErrors.BuildNotFound("Registration", request.Id))); }
public async Task <Result <OrderDto> > Handle(GetOrderQuery request, CancellationToken cancellationToken) { var orders = new Dictionary <long, OrderDto>(); await _dbConnection.QueryAsync <OrderDto, OrderItemDto, OrderDto>(BuildQuery(), (order, item) => { if (!orders.ContainsKey(order.Id)) { order.Items ??= new List <OrderItemDto>(); orders.Add(order.Id, order); } orders[order.Id].Items.Add(item); return(order); }, new { id = request.Id }); return(orders.Count() == 1 ? Result.Ok(orders.Values.Single()) : Result.Fail <OrderDto>(DomainErrors.BuildNotFound("Order", request.Id))); }