public ActionResult CancelReservation(long reservationID) { if (!Request.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } else { if (ModelState.IsValid) { //send a request on the main server and await for the response DTOHelper dtoHlp = new DTOHelper(); MyRemoteServices.AgentEndpointPortClient aepc = new MyRemoteServices.AgentEndpointPortClient(); MyRemoteServices.cancelReservationRequest crRequest = dtoHlp.GetCancelReservationRequest(reservationID, ReservationStatus.CANCELED); MyRemoteServices.cancelReservationResponse crResponse = aepc.cancelReservation(crRequest); if (crResponse.responseWrapper.success) { //save localy using (var ctx = new ApplicationDbContext()) { Reservation res = ctx.Reservations.FirstOrDefault(x => x.Id == reservationID); res.ReservationStatus = ReservationStatus.CANCELED; ctx.SaveChanges(); } } else { //some error happened, retry TempData["error"] = crResponse.responseWrapper.message; return(RedirectToAction("MyReservations", "Agent")); } TempData["success"] = "Successfully cancelled the reservation"; return(RedirectToAction("MyReservations", "Agent")); } else { //invalid VM exception TempData["error"] = "Some form atributes are incorrect"; return(RedirectToAction("MyReservations", "Agent")); } } }
public MyRemoteServices.cancelReservationRequest GetCancelReservationRequest(long reservationId, ReservationStatus rStatus) { using (var ctx = new ApplicationDbContext()) { long serverId = (long)ctx.Reservations.FirstOrDefault(x => x.Id == reservationId).MainServerId; MyRemoteServices.ReservationLite resData = new MyRemoteServices.ReservationLite { reservationMainServerId = serverId, reservationStatus = (MyRemoteServices.ReservationStatus)rStatus }; MyRemoteServices.cancelReservationRequest retObj = new MyRemoteServices.cancelReservationRequest { reservationLite = resData }; return(retObj); } }