Skip to content

Commit

Permalink
Renamed Outcome to Result
Browse files Browse the repository at this point in the history
  • Loading branch information
AskarMusthaffa committed Jan 2, 2024
1 parent 9300b42 commit 840e8fc
Show file tree
Hide file tree
Showing 10 changed files with 24 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,27 @@

namespace SmartHotel.Abstraction.Result
{
public class Outcome<T>
public class Result<T>
{
public bool IsSuccess { get; }
public T Value { get; }
public Error Error { get; }

private Outcome(bool isSuccess, T value, Error error)
private Result(bool isSuccess, T value, Error error)
{
IsSuccess = isSuccess;
Value = value;
Error = error;
}

public static Outcome<T> Success(T value)
public static Result<T> Success(T value)
{
return new Outcome<T>(true, value, null);
return new Result<T>(true, value, null);
}

public static Outcome<T> Failure(Error error)
public static Result<T> Failure(Error error)
{
return new Outcome<T>(false, default(T), error);
return new Result<T>(false, default(T), error);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace SmartHotel.Abstraction.Result
public static class ResultExtensions
{
public static T Match<T>(
this Outcome<T> result,
this Result<T> result,
Func<T> onSuccess,
Func<Error, T> onFailure)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace SmartHotel.BookingService.CQRS.Commands.CreateBooking
{
public class CreateBookingCommand : IRequest<Outcome<int>>
public class CreateBookingCommand : IRequest<Result<int>>
{
public int RoomId { get; set; }
public DateTime BookingDate { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace SmartHotel.BookingService.CQRS.Commands.CreateBooking
{
public class CreateBookingCommandHandler : IRequestHandler<CreateBookingCommand, Outcome<int>>
public class CreateBookingCommandHandler : IRequestHandler<CreateBookingCommand, Result<int>>
{
private readonly IBookingRepository _repository;
private readonly IValidator<CreateBookingCommand> _validator;
Expand All @@ -19,7 +19,7 @@ public CreateBookingCommandHandler(IBookingRepository repository, IValidator<Cre
_validator = validator ;
}

public async Task<Outcome<int>> Handle(CreateBookingCommand createBookingCommand, CancellationToken cancellationToken)
public async Task<Result<int>> Handle(CreateBookingCommand createBookingCommand, CancellationToken cancellationToken)
{
_validator.ValidateAndThrow(createBookingCommand);

Expand All @@ -32,7 +32,7 @@ public async Task<Outcome<int>> Handle(CreateBookingCommand createBookingCommand

var result = await _repository.CreateBookingAsync(booking);

return Outcome<int>.Success(result);
return Result<int>.Success(result);
}
}
}
8 changes: 4 additions & 4 deletions Services/Booking/CQRS/Queries/GetBookings/GetBookingsQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@

namespace SmartHotel.BookingService.CQRS.Queries.GetBookings
{
public class GetBookingsQuery : IRequest<Outcome<List<GetBookingsQueryResponse>>>, ICachableQuery
public class GetBookingsQuery : IRequest<Result<List<GetBookingsQueryResponse>>>, ICachableQuery
{
public bool BypassCache { get; set; }
public string CacheKey => $"booking-list";
public TimeSpan? SlidingExpiration { get; set; }
}

internal class GetBookingListQueryHandler : IRequestHandler<GetBookingsQuery, Outcome<List<GetBookingsQueryResponse>>>
internal class GetBookingListQueryHandler : IRequestHandler<GetBookingsQuery, Result<List<GetBookingsQueryResponse>>>
{
private readonly IBookingRepository _repository;

Expand All @@ -23,7 +23,7 @@ public GetBookingListQueryHandler(IBookingRepository repository)
_repository = repository;
}

public async Task<Outcome<List<GetBookingsQueryResponse>>> Handle(GetBookingsQuery request, CancellationToken cancellationToken)
public async Task<Result<List<GetBookingsQueryResponse>>> Handle(GetBookingsQuery request, CancellationToken cancellationToken)
{
var bookings = await _repository.GetBookingsAsync();

Expand All @@ -35,7 +35,7 @@ public async Task<Outcome<List<GetBookingsQueryResponse>>> Handle(GetBookingsQue
PaymentStatus = booking.PaymentStatus.ToString()
}).ToList();

return Outcome<List<GetBookingsQueryResponse>>.Success(getBookingQueryResponses);
return Result<List<GetBookingsQueryResponse>>.Success(getBookingQueryResponses);
}

}
Expand Down
2 changes: 1 addition & 1 deletion Services/Booking/Controllers/BookingController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public async Task<IActionResult> CreateBooking([FromBody] CreateBookingRequest r
}
else
{
return BadRequest(Outcome<Error>.Failure(BookingErrors.Unavailable(request.BookingDate)));
return BadRequest(Result<Error>.Failure(BookingErrors.Unavailable(request.BookingDate)));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace SmartHotel.BookingService.CQRS.Queries.GetRoomAvailabilities
{
public class GetRoomAvailabilitiesQuery : GridifyQuery, IRequest<Outcome<GetRoomAvailabilitiesQueryResponse>>
public class GetRoomAvailabilitiesQuery : GridifyQuery, IRequest<Result<GetRoomAvailabilitiesQueryResponse>>
{

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
using SmartHotel.BookingService.Repository;
using MediatR;
using SmartHotel.Abstraction.Result;
using System.Collections.Generic;
using AutoMapper;

namespace SmartHotel.BookingService.CQRS.Queries.GetRoomAvailabilities
{
public class GetRoomAvailabilitiesQueryHandler : IRequestHandler<GetRoomAvailabilitiesQuery, Outcome<GetRoomAvailabilitiesQueryResponse>>
public class GetRoomAvailabilitiesQueryHandler : IRequestHandler<GetRoomAvailabilitiesQuery, Result<GetRoomAvailabilitiesQueryResponse>>
{
private readonly IRoomRepository _repository;
private readonly IMapper _mapper;
Expand All @@ -18,14 +17,13 @@ public GetRoomAvailabilitiesQueryHandler(IRoomRepository repository, IMapper map
_mapper = mapper;
}

public async Task<Outcome<GetRoomAvailabilitiesQueryResponse>> Handle(GetRoomAvailabilitiesQuery request, CancellationToken cancellationToken)
public async Task<Result<GetRoomAvailabilitiesQueryResponse>> Handle(GetRoomAvailabilitiesQuery request, CancellationToken cancellationToken)
{
var (availabilities, totalCount) = _repository.GetAvailabilities(request);

var roomAvailabilities = availabilities.Select(response => _mapper.Map<RoomAvailabilityDto>(response)).ToList();

return Outcome<GetRoomAvailabilitiesQueryResponse>.Success(new GetRoomAvailabilitiesQueryResponse(roomAvailabilities, totalCount));

return Result<GetRoomAvailabilitiesQueryResponse>.Success(new GetRoomAvailabilitiesQueryResponse(roomAvailabilities, totalCount));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace SmartHotel.BookingService.CQRS.Queries.IsRoomAvailable
{
public class IsRoomAvailabilityGuery : IRequest<Outcome<IsRoomAvailabilityQueryResponse>>
public class IsRoomAvailabilityGuery : IRequest<Result<IsRoomAvailabilityQueryResponse>>
{
public int RoomId { get; set; }
public DateTime BookingDate { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace SmartHotel.BookingService.CQRS.Queries.GetBooking
{
public class GetRoomAvailabilityQueryHandler : IRequestHandler<IsRoomAvailabilityGuery, Outcome<IsRoomAvailabilityQueryResponse>>
public class GetRoomAvailabilityQueryHandler : IRequestHandler<IsRoomAvailabilityGuery, Result<IsRoomAvailabilityQueryResponse>>
{
private readonly IRoomRepository _repository;

Expand All @@ -17,13 +17,13 @@ public GetRoomAvailabilityQueryHandler(IRoomRepository repository)
_repository = repository ?? throw new ArgumentNullException(nameof(repository));
}

public async Task<Outcome<IsRoomAvailabilityQueryResponse>> Handle(IsRoomAvailabilityGuery request, CancellationToken cancellationToken)
public async Task<Result<IsRoomAvailabilityQueryResponse>> Handle(IsRoomAvailabilityGuery request, CancellationToken cancellationToken)
{
var isAvailable = await _repository.IsRoomAvailable(request.RoomId, request.BookingDate);
if (!isAvailable)
throw new NotFoundException(request.RoomId.ToString(), nameof(RoomAvailability));

return Outcome<IsRoomAvailabilityQueryResponse>.Success( new IsRoomAvailabilityQueryResponse(isAvailable));
return Result<IsRoomAvailabilityQueryResponse>.Success( new IsRoomAvailabilityQueryResponse(isAvailable));
}
}
}

0 comments on commit 840e8fc

Please sign in to comment.