예제 #1
0
 public AjaxResponse SubmitBooking([FromBody] PostBooking newBooking)
 {
     try
     {
         int prod;
         var httpRequest = HttpContext.Current.Request;
         if (!string.IsNullOrEmpty(newBooking.BookingNumber))
         {
             prod = _helper.PostBooking(newBooking);
         }
         return(new AjaxResponse
         {
             Success = true,
             Response = "Transaction successful",
         });
     }
     catch (Exception x)
     {
         //req.CreateResponse(HttpStatusCode.InternalServerError);
         return(new AjaxResponse
         {
             Success = false,
             Response = "Request Failed",
             ExceptionMessage = x.ToString()
         });
     }
 }
예제 #2
0
        public static async Task UpdateBooking(Booking booking)
        {
            using (HttpClient httpClient1 = new HttpClient())
            {
                PostBooking b = new PostBooking()
                {
                    UserID      = LogInViewModel.User.ID,
                    RoomId      = booking.BookedRoom.ID,
                    StartDate   = booking.StartDate.DateTime,
                    EndDate     = booking.EndDate.DateTime,
                    Adress      = booking.Adress,
                    PhoneNumber = booking.PhoneNumber
                };

                var         json        = JsonConvert.SerializeObject(b);
                HttpContent httpContent = new StringContent(json);

                httpClient1.Timeout = new TimeSpan(0, 0, 5);
                httpContent.Headers.Clear();
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                await httpClient1.PutAsync(WebServiceUrl + "Bookings/" + booking.BookingID, httpContent);

                httpClient1.Dispose();
            }
        }
예제 #3
0
        public async Task <IActionResult> PostBookingDetails([FromBody] PostBooking booking)
        {
            using (var conn = _context.Database.GetDbConnection() as SqlConnection)
            {
                SqlTransaction transaction = null;
                try
                {
                    await conn.OpenAsync();

                    transaction = conn.BeginTransaction();
                    int insertedRow = -1;
                    using (SqlCommand cmd = new SqlCommand(@"INSERT INTO Booking(BookingDate,StartTime,EndTime,RoomId,CustomerId) VALUES(@BookingDate,@StartTime,@EndTime,@RoomId,@CustomerId);SELECT SCOPE_IDENTITY();", (SqlConnection)conn, transaction))
                    {
                        cmd.Parameters.AddWithValue("@BookingDate", booking.DateTimeDetails.BookDate);
                        cmd.Parameters.AddWithValue("@StartTime", booking.DateTimeDetails.StartTime);
                        cmd.Parameters.AddWithValue("@EndTime", booking.DateTimeDetails.EndTime);
                        cmd.Parameters.AddWithValue("@RoomId", booking.Room.RoomId);
                        cmd.Parameters.AddWithValue("@CustomerId", booking.Customer.CustomerId);

                        var modified = await cmd.ExecuteScalarAsync();

                        insertedRow = Convert.ToInt32(modified);
                    }

                    foreach (var addons in booking.Addons)
                    {
                        using (SqlCommand cmd = new SqlCommand(@"INSERT INTO BookingAddOn(BookingId,AddOnId,Quantity) VALUES(@BookingId,@AddOnId,@Quantity)", (SqlConnection)conn, transaction))
                        {
                            cmd.Parameters.AddWithValue("@BookingId", insertedRow);
                            cmd.Parameters.AddWithValue("@AddOnId", addons.AddOnId);
                            cmd.Parameters.AddWithValue("@Quantity", addons.Quantity);

                            await cmd.ExecuteNonQueryAsync();
                        }
                    }
                    transaction.Commit();
                    return(Ok(booking));
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    return(BadRequest(ex));
                }
            }
        }
예제 #4
0
        //post booking
        public int PostBooking(PostBooking booking)
        {
            using (var con = new NpgsqlConnection(_Ycon))
            {
                int result;

                var cmd = new NpgsqlCommand("\"submitbooking\"", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.Add(new NpgsqlParameter("reqMovieId", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters[0].Value = booking.MovieId;

                cmd.Parameters.Add(new NpgsqlParameter("reqBookDate", NpgsqlTypes.NpgsqlDbType.Timestamp));
                //cmd.Parameters[1].Value = booking.BookingDate;
                cmd.Parameters[1].Value = DateTime.Now;

                cmd.Parameters.Add(new NpgsqlParameter("reqPaymentMethodId", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters[2].Value = booking.PaymentMethodId;

                cmd.Parameters.Add(new NpgsqlParameter("reqHouseId", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters[3].Value = booking.HouseId;

                cmd.Parameters.Add(new NpgsqlParameter("reqAmount", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters[4].Value = booking.Amount;

                cmd.Parameters.Add(new NpgsqlParameter("reqShowMomentId", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters[5].Value = booking.ShowMomentId;

                cmd.Parameters.Add(new NpgsqlParameter("reqCustomerId", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters[6].Value = booking.CustomerId;


                cmd.Parameters.Add(new NpgsqlParameter("reqBookingNum", NpgsqlTypes.NpgsqlDbType.Varchar));
                //cmd.Parameters[7].Value = booking.BookingNumber;
                cmd.Parameters[7].Value = randomStringToAdd();

                con.Open();

                result = Convert.ToInt32(cmd.ExecuteScalar());
                con.Close();
                con.Dispose();
                return(result);
            }
        }
예제 #5
0
        public async Task <ActionResult <Booking> > PostBooking(PostBooking postBooking)
        {
            Booking booking = new Booking()
            {
                BookedRoomID = postBooking.RoomId,
                StartDate    = postBooking.StartDate,
                EndDate      = postBooking.EndDate,
                UserID       = postBooking.UserID,
                PhoneNumber  = postBooking.PhoneNumber,
                Adress       = postBooking.Adress,
                BookingID    = 0
            };

            _context.Booking.Add(booking);


            var result = await _context.SaveChangesAsync();

            if (result <= 0)
            {
                return(BadRequest());
            }

            return(Ok());

            //Booking booking = new Booking();
            //booking.roomID = postBooking.BookingRooms[0].ID;
            //booking.BookingID = 0;
            //booking.EndDate = postBooking.EndDate;
            //booking.StartDate = postBooking.StartDate;
            //booking.UserID = postBooking.UserID;
            //_context.Booking.Add(booking);
            //try
            //{
            //    var result = await _context.SaveChangesAsync();
            //}
            //catch (Exception e)
            //{
            //    Debug.WriteLine(e.Message);
            //}
            //return Ok(); CTRL + K, CTRL + C
        }
예제 #6
0
        public async Task <IActionResult> PutBooking(int id, PostBooking booking)
        {
            Booking b = new Booking()
            {
                BookedRoomID = booking.RoomId,
                UserID       = booking.UserID,
                BookingID    = id,
                StartDate    = booking.StartDate,
                EndDate      = booking.EndDate,
                Adress       = booking.Adress,
                PhoneNumber  = booking.PhoneNumber
            };

            if (id != b.BookingID)
            {
                return(BadRequest());
            }

            _context.Entry(b).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!BookingExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <ActionResult> CreateBooking(CreateBookingModel createBookingModel)
        {
            createBookingModel = CreateBookingModelWithoutInfoQuestions(createBookingModel);

            if (createBookingModel.EventId <= 0)
            {
                throw new Exception(_localizer["AnErrorOccurred"]);
            }

            if (!ModelState.IsValid)
            {
                return(GetJsonResultFromModelStateErrors());
            }

            if (_bookingService.DateHasPassed(createBookingModel.StartDate) || _bookingService.DateHasPassed(createBookingModel.LastApplicationDate))
            {
                ModelState.AddModelError("", _localizer["BookingLastDayPassedError"]);
                return(GetJsonResultFromModelStateErrors());
            }

            var newToken = await _token.GetNewToken();

            var client = new EduAdminAPIClient.Client(newToken);

            var booking = new PostBooking
            {
                Answers       = _questionService.GetBookingAnswers(createBookingModel.BookingQuestions),
                ContactPerson = new PostBookingContactPerson
                {
                    FirstName = createBookingModel.CustomerContact?.FirstName,
                    LastName  = createBookingModel.CustomerContact?.LastName,
                    Email     = createBookingModel.CustomerContact?.Email
                },
                Customer = new PostBookingCustomer
                {
                    CustomerName       = createBookingModel.Customer?.CustomerName,
                    OrganisationNumber = createBookingModel.Customer?.InvoiceOrgnr,
                    Address            = createBookingModel.Customer?.Address1,
                    Zip  = createBookingModel.Customer?.Zip,
                    City = createBookingModel.Customer?.City
                },
                EventId      = createBookingModel.EventId,
                Participants = createBookingModel.Participants?.Select(x => new BookingParticipant
                {
                    Answers   = _questionService.GetBookingAnswers(x.ParticipantQuestions),
                    FirstName = x.FirstName,
                    LastName  = x.LastName,
                    Email     = x.Email,
                    CivicRegistrationNumber = x.CivicRegistrationNumber,
                    PriceNameId             = x.PriceNameId != 0 ? (int?)x.PriceNameId : null,
                    Sessions = x.Sessions?.Where(s => s.Participating).Select(y => new BookingParticipantSession
                    {
                        SessionId   = y.SessionId,
                        PriceNameId = y.PriceNameId
                    }).ToList()
                }).ToList(),
                SendConfirmationEmail = new SendInfoBase
                {
                    SendToParticipants = true
                },
            };

            BookingCreated newBooking;

            try
            {
                newBooking = await client.Booking.PostAsync(booking);
            }
            catch (EduAdminApi.EduAdminException <ForbiddenResponse> ex)
            {
                var errorResult = ex.Result;
                var errorStr    = "";

                foreach (var item in errorResult.Errors)
                {
                    //If multiple errors would exist, separate these
                    if (!string.IsNullOrWhiteSpace(errorStr))
                    {
                        errorStr += "<br />";
                    }

                    switch (item?.ErrorCode ?? 0)
                    {
                    case 40:
                        //No seats left
                        errorStr += _localizer["NotEnoughSeatsLeft"];
                        break;

                    case 45:
                        //Person already booked
                        errorStr += _localizer["BookingContainsBookedParticipants"];
                        break;

                    case 200:
                        //Person exists on overlapping sessions
                        errorStr += _localizer["BookingContainsOverlapPersons"];
                        break;

                    default:
                        errorStr += _localizer["CouldntCreateBookingTryAgain"];
                        break;
                    }
                }

                ModelState.AddModelError("", errorStr);
                return(GetJsonResultFromModelStateErrors());
            }

            return(Json(new CreateBookingResult
            {
                Success = true,
                SuccessRedirectUrl = Url.Action("BookingCreated", "Booking", new { eclID = newBooking.BookingId })
            }));
        }