Skip to content

Commit

Permalink
Merge 5f29642 into 7492afa
Browse files Browse the repository at this point in the history
  • Loading branch information
FatemehMoghadam committed Aug 27, 2018
2 parents 7492afa + 5f29642 commit 4e85501
Show file tree
Hide file tree
Showing 11 changed files with 1,335 additions and 78 deletions.
22 changes: 13 additions & 9 deletions parkstay/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ def status_history(self, request, format='json', pk=None):
def campsites(self, request, format='json', pk=None):
try:
http_status = status.HTTP_200_OK
serializer = CampsiteSerialiser(self.get_object().campsites,many=True,context={'request':request})
serializer = CampsiteSerialiser(self.get_object().campsites,many=True,context={'request':request,'status': None})
res = serializer.data

return Response(res,status=http_status)
Expand Down Expand Up @@ -870,8 +870,12 @@ def available_campsite_classes(self, request, format='json', pk=None):
available_serializers = []
for k,v in available.items():
s = CampsiteClassSerializer(CampsiteClass.objects.get(id=k),context={'request':request},method='get').data
s['campsites'] = [c.id for c in v]
available_serializers.append(s)
s['campsites'] = [c_id for c_id, stat in v.items() if stat != 'booked']
counts = {'open': 0, 'closed': 0, 'booked': 0}
for c_id, stat in v.items():
counts[stat] += 1
s['status'] = ', '.join(['{} {}'.format(stat, type) for type, stat in counts.items() if stat])
available_serializers.append(s)
available_serializers.sort(key=lambda x: x['name'])
data = available_serializers

Expand Down Expand Up @@ -921,14 +925,8 @@ def retrieve(self, request, pk=None, ratis_id=None, format=None, show_all=False)
if ground.campground_type != 0:
return Response({'error': 'Campground doesn\'t support online bookings'}, status=400)

#if not ground._is_open(start_date):
# return Response({'closed': 'Campground is closed for your selected dates'}, status=status.HTTP_400_BAD_REQUEST)

# get a length of the stay (in days), capped if necessary to the request maximum
length = max(0, (end_date-start_date).days)
#if length > settings.PS_MAX_BOOKING_LENGTH:
# length = settings.PS_MAX_BOOKING_LENGTH
# end_date = start_date+timedelta(days=settings.PS_MAX_BOOKING_LENGTH)

# fetch all the campsites and applicable rates for the campground
context = {}
Expand Down Expand Up @@ -1110,6 +1108,8 @@ def retrieve(self, request, pk=None, ratis_id=None, format=None, show_all=False)
bookings_map[s.name]['availability'][offset][0] = False
if stat == 'closed':
bookings_map[s.name]['availability'][offset][1] = 'Closed' if show_all else 'Unavailable'
if any([v[0] == 'booked' for k, v in availability[s.pk].items()]):
bookings_map[s.name]['availability'][offset][1] = 'Closed & booked' if show_all else 'Unavailable'
elif stat == 'booked':
bookings_map[s.name]['availability'][offset][1] = 'Booked' if show_all else 'Unavailable'
else:
Expand Down Expand Up @@ -1621,6 +1621,8 @@ def list(self, request, *args, **kwargs):
bk['override_reason'] = booking.override_reason.text
if booking.override_reason_info:
bk['override_reason_info'] = booking.override_reason_info
if booking.send_invoice:
bk['send_invoice'] = booking.send_invoice
if booking.override_price:
discount = booking.discount
if not booking.paid:
Expand Down Expand Up @@ -1686,6 +1688,7 @@ def create(self, request, format=None):
override_price = serializer.validated_data.get('override_price', None)
override_reason = serializer.validated_data.get('override_reason', None)
override_reason_info = serializer.validated_data.get('override_reason_info', None)
send_invoice = serializer.validated_data.get('send_invoice', False)
overridden_by = None if (override_price is None) else request.user
try:
emailUser = request.data['customer']
Expand Down Expand Up @@ -1718,6 +1721,7 @@ def create(self, request, format=None):
'override_price' : override_price,
'override_reason' : override_reason,
'override_reason_info' : override_reason_info,
'send_invoice' : send_invoice,
'overridden_by': overridden_by,
'customer' : customer,
'first_name': emailUser['first_name'],
Expand Down
14 changes: 6 additions & 8 deletions parkstay/frontend/parkstay/src/apps/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import Campsite from '../components/campsites/campsite.vue'
import firstLevelSearch from '../components/booking/first-level-search.vue'
import bookingDashboard from '../components/booking/dashboard.vue'
import addBooking from '../components/booking/addbooking.vue'
import bookingCloseClasses from '../components/booking/booking-close-classes.vue'
import BookingIndex from '../components/booking/index.vue'
import editBooking from '../components/booking/changebooking2.vue'
import page_404 from '../components/utils/404.vue'
Expand Down Expand Up @@ -107,9 +108,6 @@ const routes = [
]
},{
path:'bookings',
/*component: {
render (c) { return c('router-view') }
},*/
component: BookingIndex,
children:[
{
Expand All @@ -122,15 +120,15 @@ const routes = [
name: 'add-booking',
component: addBooking,
},
{
path: 'add/:cg/close_booking/',
name: 'booking-close-classes',
component: bookingCloseClasses,
},
{
path: 'edit/:booking_id',
name: 'edit-booking',
component: editBooking
/*beforeEnter:(to,from,next) => {
store.commit('SET_LOADER_STATE',true);
store.commit('SET_LOADER_TEXT','Loading Booking');
next();
}*/
},
]
},
Expand Down
27 changes: 23 additions & 4 deletions parkstay/frontend/parkstay/src/components/booking/addbooking.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
<div class="well">
<div class="row">
<div class="col-md-12">
<h3 class="text-primary">Book a Campsite at {{campground.name}}</h3>
<div class="col-md-6">
<h3 class="text-primary pull-left">Book a Campsite at {{campground.name}}</h3>
</div>
<div class="col-md-6" v-if="(campground.site_type == 1) || (campground.site_type == 2)">
<router-link style="margin-top:20px;" class="btn btn-primary table_btn pull-right" :to="{name:'booking-close-classes'}">Booking close campsite</router-link>
</div>
</div>
<div class="col-md-12">
<p>Please visit the <a target='_blank' v-bind:href="'/availability_admin/?site_id=' + campground.id "> Campsite Availability checker</a> for expected availability.</p>
Expand Down Expand Up @@ -58,8 +63,8 @@
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Expand All @@ -80,6 +85,7 @@
<thead>
<tr>
<th class="form-group">Campsite</th>
<th class="form-group">Status</th>
<th >Sites to book
<input class="checkbox" type="checkbox" id="selectAll" v-model="selectAll">
</th>
Expand All @@ -88,8 +94,9 @@
<tbody><template v-for="campsite in booking.campsites">
<tr>
<td class="form-group"> {{campsite.name}} - {{campsite.type}}</td>
<td class="form-group"> {{campsite.status}}</td>
<td>
<input class="checkbox" type="checkbox" :value="campsite.id" v-model="multibook_selected" @change="updatePrices()" number>
<input class="checkbox" type="checkbox" :value="campsite.id" :disabled="campsite.status=='booked'" v-model="multibook_selected" @change="updatePrices()" number>
</td>
</tr></template>
</tbody>
Expand Down Expand Up @@ -117,13 +124,15 @@
<thead>
<tr>
<th class="site">Campsite</th>
<th class="form-group">Status</th>
<th class="book">Availability</th>
<th class="numBook">Number of sites to book</th>
</tr>
</thead>
<tbody><template v-for="c in booking.campsite_classes">
<tr>
<td class="site"> {{c.name}} </td>
<td class="site"> {{c.status}} </td>
<td class="book"> {{ c.campsites.length }} available </td>
<td class="numBook">
<input type="number" min="1" v-bind:max="c.campsites.length" name="campsite-type" class="form-control" v-model="c.selected_campsite_class" @change="updatePrices()">
Expand Down Expand Up @@ -299,6 +308,14 @@
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<input type="checkbox" name="sendInvoice" class="form control" id="send_invoice" v-model="booking.send_invoice"/>
<label for="sendInvoice">Send invoice upon booking</label>
</div>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="row">
Expand Down Expand Up @@ -378,6 +395,7 @@ export default {
override_price:"0",
override_reason:"",
override_reason_info:"",
send_invoice: false,
parkEntry:{
vehicles:0,
},
Expand Down Expand Up @@ -951,6 +969,7 @@ export default {
override_price:vm.booking.override_price,
override_reason:vm.booking.override_reason,
override_reason_info:vm.booking.override_reason_info,
send_invoice:vm.booking.send_invoice,
customer:{
email:vm.booking.email,
first_name:vm.booking.firstname,
Expand Down
Loading

0 comments on commit 4e85501

Please sign in to comment.