// okay the moral of the story here is that I really hate this // it is hard to digest and makes it difficult to understand // i really want to make it possible to define a dynamic state machine as part of the actor // and then push the messaging components to the edge so that they are less intrusive into the system // then i can just send the event, let it get published, and wait for another event to occur // also if this could somehow be stored in-memory with a saga repository that would // allow it to be found by mass transit, we could defer our little actor off into the in-memory repository // and either timeout or do something else, removing it from the repository so it goes away // once the request has been completed. this would have to be keyed by some Guid to avoid performance hits public IAsyncResult BeginAction(HttpContext context, AsyncCallback callback, object state) { _context = context; _requestId = CombGuid.Generate(); var request = new RequestReservation() { RequestId = _requestId, Name = "Johnson", NumberOfGuests = 4, }; _asyncResult = _bus.MakeRequest(b => b.Publish(request, c => c.SendResponseTo(_bus))) .When<ReservationAccepted>().IsReceived(m => { _context.Response.ContentType = "text/plain"; _context.Response.Write("Reservation accepted for " + m.NumberOfGuests + " guests under the name of " + m.Name); }) .TimeoutAfter(30.Seconds()) .OnTimeout(() => { _context.Response.ContentType = "text/plain"; _context.Response.Write("A timeout occurred waiting for a response from the reservation request."); }) .BeginSend(callback, state); return _asyncResult; }
public async Task <BaseResponseMessage> ReservationService(RequestReservation request) { ReservationOperation op = new ReservationOperation(request, this.reservationService); op.Execute(); return(op.baseResponseMessage); }
public async Task <BaseResponseMessage> ReservationService([FromBody] JObject json) { string jsonRequest = json.ToString(); RequestReservation request = new RequestReservation(); request = JsonConvert.DeserializeObject <RequestReservation>(jsonRequest); return(await this.repository.ReservationService(request)); }
public static void ModifyReservation(RequestReservation request, ref bool checkValue) { try { checkValue = false; Reservation reservation = new Reservation { UPDATE_USER = request.UPDATE_USER, INSERT_USER = request.INSERT_USER, CUSTOMER_NUMBER = request.CUSTOMER_NUMBER, BOAT_ID = request.BOAT_ID, PAYMENT_ID = request.PAYMENT_ID, PAYMENT_TYPE = request.Header.OperationTypes.ToString(), PRICE = request.PRICE, TOUR_TYPE = request.TOUR_TYPE, RESERVATION_DATE = request.RESERVATION_DATE, CAPACITY = request.CAPACITY, CONFIRM = request.CONFIRM }; if (request.Header.OperationTypes == (int)OperationType.OperationTypes.UPDATE) { //Modify Reservation Informations checkValue = reservationService.Update(reservation); } else if (request.Header.OperationTypes == (int)OperationType.OperationTypes.DELETE) { //Delete Reservation Informations checkValue = reservationService.Delete(reservation); } } catch (Exception ex) { log.Error("AddReservation has an ERROR: [ERROR : " + ex.Message + "]"); throw new Exception(ex.Message); } }
public ReservationOperation(RequestReservation request, ReservationService service) { this.request.Header = new Header(); this.request = request; this.reservationService = service; }
private void BookHotelOnClick(object sender, EventArgs e) { Hide(); Close(); RequestReservation?.Invoke(sender, new HotelSelectedEventArgs(Convert.ToInt32(Tag))); }
public ReservationOperation(RequestReservation request) { this.request.Header = new Header(); this.request = request; }
public static long AddReservation(RequestReservation request, ref bool checkValue) { try { long checkguid = 0; Reservation reservation = new Reservation { UPDATE_USER = request.UPDATE_USER, INSERT_USER = request.INSERT_USER, CUSTOMER_NUMBER = request.CUSTOMER_NUMBER, BOAT_ID = request.BOAT_ID, PAYMENT_ID = request.PAYMENT_ID, PAYMENT_TYPE = request.Header.OperationTypes.ToString(), PRICE = request.PRICE, TOUR_TYPE = request.TOUR_TYPE, RESERVATION_DATE = request.RESERVATION_DATE, RESERVATION_END_DATE = request.RESERVATION_END_DATE, CAPACITY = request.CAPACITY, CONFIRM = request.CONFIRM }; //Add Reservation Informations checkguid = reservationService.Insert(reservation); if (checkguid == 0) { checkValue = false; } else { checkValue = true; } #region Boats Capacity Calculation RequestBoatCapacity requestBoatsCapacity = new RequestBoatCapacity { UPDATE_USER = request.UPDATE_USER, INSERT_USER = request.INSERT_USER, BOAT_ID = request.BOAT_ID, RESERVATION_DATE = request.RESERVATION_DATE, RESERVATION_END_DATE = request.RESERVATION_END_DATE, CAPACITY = request.CAPACITY, RESERVATION_ID = checkguid, Header = new Header { OperationTypes = (int)OperationType.OperationTypes.ADD, ApiKey = request.Header.ApiKey, Device = request.Header.Device, RequestId = request.Header.RequestId, TokenId = request.Header.TokenId } }; BoatsCapacityService boatsCapacityService = new BoatsCapacityService(); BoatCapacityOperation op = new BoatCapacityOperation(requestBoatsCapacity, boatsCapacityService); op.Execute(); if (op.response.header.IsSuccess) { checkValue = true; } else { checkValue = false; } #endregion return(checkguid); } catch (Exception ex) { log.Error("AddReservation has an ERROR: [ERROR : " + ex.Message + "]"); throw new Exception(ex.Message); } }