private async Task <ReservationWriteResource> AttachUserIdToRecord(ReservationWriteResource record) { var user = await Identity.GetConnectedUserId(httpContext); record.UserId = user.UserId; return(record); }
public async Task <int> GetPortIdFromPickupPointId(ReservationWriteResource record) { PickupPoint pickupPoint = await context.PickupPoints .Include(x => x.CoachRoute) .FirstOrDefaultAsync(x => x.Id == record.PickupPointId); return(pickupPoint.CoachRoute.PortId); }
public bool IsKeyUnique(ReservationWriteResource record) { return(!context.Reservations.Any(x => x.Date == Convert.ToDateTime(record.Date) && x.ReservationId != record.ReservationId && x.DestinationId == record.DestinationId && x.CustomerId == record.CustomerId && string.Equals(x.TicketNo, record.TicketNo, StringComparison.OrdinalIgnoreCase))); }
public async Task <int> IsValid(ReservationWriteResource record, IScheduleRepository scheduleRepo) { return(true switch { var x when x == !IsValidCustomer(record) => 450, var x when x == !IsValidDestination(record) => 451, var x when x == !IsValidPickupPoint(record) => 452, var x when x == !IsValidDriver(record) => 453, var x when x == !IsValidShip(record) => 454, var x when x == !IsValidNationality(record) => 456, var x when x == !IsValidGender(record) => 457, var x when x == !IsValidOccupant(record) => 458, var x when x == !IsCorrectPassengerCount(record) => 455, var x when x == !UserCanAddReservationInThePast(record.Date) => 431, var x when x == !scheduleRepo.DayHasSchedule(record.Date) => 432, var x when x == !scheduleRepo.DayHasScheduleForDestination(record.Date, record.DestinationId) => 430, var x when x == !scheduleRepo.PortHasDepartures(record.Date, record.DestinationId, await GetPortIdFromPickupPointId(record)) => 427, var x when x == !PortHasVacancy(scheduleRepo, record.Date, record.Date, record.ReservationId, record.DestinationId, await GetPortIdFromPickupPointId(record), record.Adults + record.Kids + record.Free) => 433, var x when x == !IsKeyUnique(record) => 409, _ => 200, });
public async Task <IActionResult> PutReservation([FromRoute] string id, [FromBody] ReservationWriteResource record) { await AttachUserIdToRecord(record); var response = await reservationRepo.IsValid(record, scheduleRepo); record = reservationRepo.UpdateForeignKeysWithNull(record); if (response == 200) { await reservationRepo.Update(id, mapper.Map <ReservationWriteResource, Reservation>(record)); return(StatusCode(200, new { message = record.RefNo })); } else { return(GetErrorMessage(response)); } }
public async Task <IActionResult> PostReservationAsync([FromBody] ReservationWriteResource record) { var response = await reservationRepo.IsValid(record, scheduleRepo); if (response == 200) { await AssignRefNoToNewReservationAsync(record); await AttachPortIdToRecordAsync(record); await AttachUserIdToRecord(record); reservationRepo.Create(mapper.Map <ReservationWriteResource, Reservation>(record)); return(StatusCode(200, new { message = record.RefNo })); } else { return(GetErrorMessage(response)); } }
private async Task <ReservationWriteResource> AssignRefNoToNewReservationAsync(ReservationWriteResource record) { record.RefNo = await reservationRepo.AssignRefNoToNewReservation(record); return(record); }
private async Task <ReservationWriteResource> AttachPortIdToRecordAsync(ReservationWriteResource record) { record.PortId = await reservationRepo.GetPortIdFromPickupPointId(record); return(record); }