Esempio n. 1
0
        // 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;
        }
Esempio n. 2
0
        public async Task <BaseResponseMessage> ReservationService(RequestReservation request)
        {
            ReservationOperation op = new ReservationOperation(request, this.reservationService);

            op.Execute();
            return(op.baseResponseMessage);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
 public ReservationOperation(RequestReservation request, ReservationService service)
 {
     this.request.Header     = new Header();
     this.request            = request;
     this.reservationService = service;
 }
Esempio n. 6
0
 private void BookHotelOnClick(object sender, EventArgs e)
 {
     Hide();
     Close();
     RequestReservation?.Invoke(sender, new HotelSelectedEventArgs(Convert.ToInt32(Tag)));
 }
Esempio n. 7
0
 public ReservationOperation(RequestReservation request)
 {
     this.request.Header = new Header();
     this.request        = request;
 }
Esempio n. 8
0
        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);
            }
        }