Skip to content

Commit

Permalink
#333 valid check-in from/to for ticket category: admin web ui: add su…
Browse files Browse the repository at this point in the history
…pport for set/update valid check in from/to
  • Loading branch information
syjer committed Sep 21, 2017
1 parent eaaddd4 commit 42638f6
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ public String getFormattedExpiration() {
return getExpiration(event.getZoneId()).format(EventStatistic.JSON_DATE_FORMATTER);
}

public String getFormattedValidCheckInFrom() {
return getValidCheckInFrom() != null ? getValidCheckInFrom(event.getZoneId()).format(EventStatistic.JSON_DATE_FORMATTER) : null;
}

public String getFormattedValidCheckInTo() {
return getValidCheckInTo() != null ? getValidCheckInTo(event.getZoneId()).format(EventStatistic.JSON_DATE_FORMATTER) : null;
}

private static BigDecimal calcSoldTicketsPercent(TicketCategory ticketCategory, int soldTickets) {
int maxTickets = Math.max(1, ticketCategory.getMaxTickets());
return BigDecimal.valueOf(soldTickets).divide(BigDecimal.valueOf(maxTickets), 2, RoundingMode.HALF_UP).multiply(MonetaryUtil.HUNDRED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ <h5 class="text-muted">Here the categories that have been defined for this event
<dt ng-if="ticketCategory.code && ticketCategory.code.length > 0">Direct Access URL</dt>
<dd ng-if="ticketCategory.code && ticketCategory.code.length > 0">{{::baseUrl}}/event/{{::event.shortName}}/code/{{::ticketCategory.code}}</dd>

<dt ng-if="ticketCategory.formattedValidCheckInFrom">Valid check-in from</dt>
<dd ng-if="ticketCategory.formattedValidCheckInFrom">{{::ticketCategory.formattedValidCheckInFrom | formatDate}}</dd>

<dt ng-if="ticketCategory.formattedValidCheckInTo">Valid check-in to</dt>
<dd ng-if="ticketCategory.formattedValidCheckInTo">{{::ticketCategory.formattedValidCheckInTo | formatDate}}</dd>

</dl>
<div class="row hidden-xs hidden-sm" ng-if="categoryHasDescriptions(ticketCategory)">
<hr />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,16 @@ <h4>Access Code:</h4>
</p>
</div>

<div class="form-group" bs-form-error="ticketCategory.validCheckInFromString">
<label for="{{buildPrefix($index, 'validCheckInFromString')}}">Valid check-in from</label>
<input ng-model="ticketCategory.validCheckInFromString" single-date no-init-date="true" start-model="ticketCategory.validCheckInFrom" id="{{buildPrefix($index, 'validCheckInFromString')}}" class="form-control">
</div>
<div class="form-group" bs-form-error="ticketCategory.validCheckInToString">
<label for="{{buildPrefix($index, 'validCheckInToString')}}">Valid check-in to</label>
<input ng-model="ticketCategory.validCheckInToString" single-date no-init-date="true" start-model="ticketCategory.validCheckInTo" id="{{buildPrefix($index, 'validCheckInToString')}}" class="form-control">
</div>


<div data-ng-if="isLanguagePresent(event.locales, language.value)" class="form-group" data-ng-repeat="(lang, language) in allLanguagesMapping">
<label for="{{buildPrefix($index, 'description.'+lang)}}">Description: {{language.displayLanguage}} <display-commonmark-preview text="ticketCategory.description[language.locale]"></display-commonmark-preview></label>
<textarea data-ng-model="ticketCategory.description[language.locale]" name="{{buildPrefix($index, 'description.'+lang)}}" id="{{buildPrefix($index, 'description.'+lang)}}" class="form-control" placeholder="Description of {{ticketCategory.name}} category"></textarea>
Expand Down
30 changes: 23 additions & 7 deletions src/main/webapp/resources/js/admin/directive/admin-directive.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@
maxDate: '=',
startDate: '=',
startModelObj: '=startModel',
watchObj: '='
watchObj: '=',
noInitDate: '='
},
require: '^ngModel',
link: function(scope, element, attrs, ctrl) {
Expand All @@ -141,7 +142,7 @@
};

var initDateUsingNow = function(modelObj) {
if(!angular.isDefined(modelObj) || !angular.isDefined(modelObj.date) || !angular.isDefined(modelObj.time)) {
if(!(modelObj && modelObj.date && modelObj.time)) {
return getNowAtStartOfHour();
}
var date = moment(modelObj.date + 'T' + modelObj.time);
Expand All @@ -152,8 +153,12 @@
var startDate = initDateUsingNow(scope.startModelObj);

var result = startDate.format(dateFormat);
ctrl.$setViewValue(result);
element.val(result);

if(!scope.noInitDate || (scope.startModelObj && scope.startModelObj.date && scope.startModelObj.time)) {
ctrl.$setViewValue(result);
element.val(result);
}


var minDate = scope.minDate || getNowAtStartOfHour();

Expand All @@ -169,9 +174,10 @@
singleDatePicker: true
});

scope.startModelObj['date'] = startDate.format('YYYY-MM-DD');
scope.startModelObj['time'] = startDate.format('HH:mm');

if(!scope.noInitDate) {
scope.startModelObj['date'] = startDate.format('YYYY-MM-DD');
scope.startModelObj['time'] = startDate.format('HH:mm');
}

function updateDates(picker, override) {
if(angular.isDefined(picker)) {
Expand All @@ -182,7 +188,17 @@
}

function updateInDigest(picker, override) {

if(picker.element.val() == "") {
scope.startModelObj = null;
ctrl.$setViewValue(element.val());
return;
}

var start = picker.startDate;

scope.startModelObj = scope.startModelObj || {};

scope.startModelObj['date'] = start.format('YYYY-MM-DD');
scope.startModelObj['time'] = start.format('HH:mm');
if (override) {
Expand Down
15 changes: 15 additions & 0 deletions src/main/webapp/resources/js/admin/ng-app/admin-application.js
Original file line number Diff line number Diff line change
Expand Up @@ -930,6 +930,19 @@
$scope.editCategory = function(category, event) {
var inception = moment(category.formattedInception);
var expiration = moment(category.formattedExpiration);

function prepareValidCheckIn(date) {
if(date) {
var m = moment(date);
return {date: m.format('YYYY-MM-DD'), time: m.format('HH:mm')}
} else {
return null
}
}

var validCheckInFrom = prepareValidCheckIn(category.formattedValidCheckInFrom);
var validCheckInTo = prepareValidCheckIn(category.formattedValidCheckInTo);

var categoryObj = {
id: category.id,
name: category.name,
Expand All @@ -946,6 +959,8 @@
date: expiration.format('YYYY-MM-DD'),
time: expiration.format('HH:mm')
},
validCheckInTo: validCheckInTo,
validCheckInFrom: validCheckInFrom,
tokenGenerationRequested: category.accessRestricted,
sticky: false
};
Expand Down

0 comments on commit 42638f6

Please sign in to comment.