コード例 #1
0
        public async Task <RoomOrderDetailsDTO> SaveRoomOrderDetails(RoomOrderDetailsDTO details)
        {
            try
            {
                var content     = JsonConvert.SerializeObject(details);
                var bodyContent = new StringContent(content, Encoding.UTF8, "application/json");
                var response    = await _client.PostAsync("api/roomorder/Create", bodyContent);

                if (response.IsSuccessStatusCode)
                {
                    var contentTemp = await response.Content.ReadAsStringAsync();

                    // Enitity to DTO convert is alrdy done in repository
                    var result = JsonConvert.DeserializeObject <RoomOrderDetailsDTO>(contentTemp);
                    return(result);
                }
                else
                {
                    var contentTemp = await response.Content.ReadAsStringAsync();

                    // Enitity to DTO convert is alrdy done in repository
                    var errorModel = JsonConvert.DeserializeObject <ErrorModel>(contentTemp);
                    throw new Exception(errorModel.ErrorMessage);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
コード例 #2
0
        public async Task <RoomOrderDetailsDTO> SaveRoomOrderDetails(RoomOrderDetailsDTO details)
        {
            var content = JsonConvert.SerializeObject(details);

            var bodyContent = new StringContent(content, Encoding.UTF8, "application/json");
            var response    = await _client.PostAsync("api/roomorder/create", bodyContent);

            // Debug
            //string res = response.Content.ReadAsStringAsync().Result;

            if (response.IsSuccessStatusCode)
            {
                var contentTemp = await response.Content.ReadAsStringAsync();

                var result = JsonConvert.DeserializeObject <RoomOrderDetailsDTO>(contentTemp);
                return(result);
            }
            else
            {
                var contentTemp = await response.Content.ReadAsStringAsync();

                var errorModel = JsonConvert.DeserializeObject <ErrorModel>(contentTemp);

                throw new Exception(errorModel.ErrorMessage);
            }
        }
コード例 #3
0
        public async Task <IActionResult> Create([FromBody] RoomOrderDetailsDTO details)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var result = await _repository.Create(details);

                    return(Ok(result));
                }
                else
                {
                    return(BadRequest(new ErrorModel()
                    {
                        ErrorMessage = "Error while creating Room Details/Booking"
                    }));
                }
            }
            catch (Exception e)
            {
                return(BadRequest(new ErrorModel()
                {
                    ErrorMessage = e.Message
                }));
            }
        }
コード例 #4
0
        public async Task <IActionResult> PaymentSuccessful([FromBody] RoomOrderDetailsDTO details)
        {
            var service        = new SessionService();
            var sessionDetails = service.Get(details.StripeSessionId);

            if (sessionDetails.PaymentStatus == "paid")
            {
                var result = await _repository.MarkPaymentSuccessful(details.Id);

                if (result == null)
                {
                    return(BadRequest(new ErrorModel()
                    {
                        ErrorMessage = "Can not mark payment as successful"
                    }));
                }

                await _emailSender.SendEmailAsync(details.Email, "Booking Confirmed - Hidden Villa",
                                                  "Your booking has been confirmed at Hidden Villa with order ID :" + details.Id);

                return(Ok(result));
            }
            else
            {
                return(BadRequest(new ErrorModel()
                {
                    ErrorMessage = "Can not mark payment as successful"
                }));
            }
        }
コード例 #5
0
        public async Task <RoomOrderDetailsDTO> GetRoomOrderDetails(int roomOrderId)
        {
            try
            {
                RoomOrderDetails roomOrder = await _db.RoomOrderDetails.Include(u => u.HotelRoom)
                                             .ThenInclude(x => x.HotelRoomImages).FirstOrDefaultAsync(u => u.Id == roomOrderId);

                RoomOrderDetailsDTO roomOrderDetailsDto = _mapper.Map <RoomOrderDetails, RoomOrderDetailsDTO>(roomOrder);
                roomOrderDetailsDto.HotelRoomDTO.TotalDays =
                    roomOrderDetailsDto.CheckOutDate.Subtract(roomOrderDetailsDto.CheckInDate).Days;

                return(roomOrderDetailsDto);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
コード例 #6
0
        public async Task <RoomOrderDetailsDTO> Create(RoomOrderDetailsDTO details)
        {
            try
            {
                details.CheckInDate  = details.CheckInDate.Date;
                details.CheckOutDate = details.CheckOutDate.Date;
                var roomOrder = _mapper.Map <RoomOrderDetailsDTO, RoomOrderDetails>(details);
                roomOrder.Status = SD.Status_Pending;
                var result = await _db.RoomOrderDetails.AddAsync(roomOrder);

                await _db.SaveChangesAsync();

                return(_mapper.Map <RoomOrderDetails, RoomOrderDetailsDTO>(result.Entity));
            }
            catch (Exception e)
            {
                return(null);
            }
        }
コード例 #7
0
        public async Task <IActionResult> PaymentSuccessful([FromBody] RoomOrderDetailsDTO details)
        {
            try
            {
                var service = new SessionService();
                //Stripe 사이트에서 sessionId로 세부정보 가져오는 코드
                var sessionDetails = service.Get(details.StripeSessionId);
                if (sessionDetails.PaymentStatus == "paid")
                {
                    var result = await _repository.MarkPaymentSuccessful(details.Id);

                    if (result == null)
                    {
                        return(BadRequest(new ErrorModel()
                        {
                            ErrorMessage = "Cannot mark payment as successful"
                        }));
                    }
                    await _emailSender.SendEmailAsync(details.Email, "Hidden villa payment msg", $"Your booking has been confirmed at HiddenVilla " +
                                                      $" with order ID : {details.Id}");

                    return(Ok(result));
                }
                else
                {
                    return(BadRequest(new ErrorModel()
                    {
                        ErrorMessage = $"{sessionDetails.PaymentStatus}. Cannot mark payment as successful"
                    }));
                }
            }
            catch (Exception e)
            {
                return(BadRequest(new ErrorModel()
                {
                    ErrorMessage = e.Message
                }));
            }
        }