Commit cac86ef5 authored by Philip Häusler's avatar Philip Häusler

add planned date of departure

parent bc84710e
/* Introduce planned departure date */
ALTER TABLE `User` ADD `planned_departure_date` INT NULL, ADD INDEX ( `planned_departure_date` );
/* Allow longer angeltype names */
ALTER TABLE `AngelTypes` CHANGE `name` `name` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
......
......@@ -31,11 +31,12 @@ function admin_arrive() {
}
$users = sql_select("SELECT * FROM `User` ORDER BY `Nick`");
$arrival_count_at_day = array();
$arrival_count_at_day = [];
$departure_count_at_day = [];
$table = "";
$users_matched = array();
$users_matched = [];
if ($search == "")
$tokens = array();
$tokens = [];
else
$tokens = explode(" ", $search);
foreach ($users as $usr) {
......@@ -52,6 +53,10 @@ function admin_arrive() {
}
$usr['nick'] = User_Nick_render($usr);
if ($usr['planned_departure_date'] != null)
$usr['rendered_planned_departure_date'] = date('Y-m-d', $usr['planned_departure_date']);
else
$usr['rendered_planned_departure_date'] = '-';
$usr['rendered_planned_arrival_date'] = date('Y-m-d', $usr['planned_arrival_date']);
$usr['rendered_arrival_date'] = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : "-";
$usr['arrived'] = $usr['Gekommen'] == 1 ? _("yes") : "";
......@@ -60,24 +65,37 @@ function admin_arrive() {
$day = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : date('Y-m-d', $usr['planned_arrival_date']);
if (! isset($arrival_count_at_day[$day]))
$arrival_count_at_day[$day] = 0;
if (! isset($departure_count_at_day[$day]))
$departure_count_at_day[$day] = 0;
$arrival_count_at_day[$day] ++;
if ($usr['planned_departure_date'] != null) {
$day = date('Y-m-d', $usr['planned_departure_date']);
if (! isset($arrival_count_at_day[$day]))
$arrival_count_at_day[$day] = 0;
if (! isset($departure_count_at_day[$day]))
$departure_count_at_day[$day] = 0;
$departure_count_at_day[$day] ++;
}
$users_matched[] = $usr;
}
ksort($arrival_count_at_day);
ksort($departure_count_at_day);
$arrival_count = array();
$arrival_sums = array();
$arrival_count = [];
$arrival_sums = [];
$arrival_sum = 0;
foreach ($arrival_count_at_day as $day => $count) {
$arrival_sum += $count;
$arrival_sum += $count - $departure_count_at_day[$day];
$arrival_sums[$day] = $arrival_sum;
$arrival_count[] = array(
$arrival_count[] = [
'day' => $day,
'count' => $count,
'sum' => $arrival_sum
);
'sum' => $arrival_sum,
'departure' => isset($departure_count_at_day[$day]) ? $departure_count_at_day[$day] : 0
];
}
return page_with_title(admin_arrive_title(), array(
......@@ -88,9 +106,10 @@ function admin_arrive() {
)),
table(array(
'nick' => _("Nickname"),
'rendered_planned_arrival_date' => _("Planned date"),
'rendered_planned_arrival_date' => _("Planned arrival"),
'arrived' => _("Arrived?"),
'rendered_arrival_date' => _("Arrival date"),
'rendered_planned_departure_date' => _("Planned departure"),
'actions' => ""
), $users_matched),
heading(_("Arrival statistics"), 2),
......@@ -103,13 +122,18 @@ function admin_arrive() {
'datasets' => array(
array(
'label' => _("arrived"),
'fillColor' => "#444",
'fillColor' => "#090",
'data' => array_values($arrival_count_at_day)
),
array(
'label' => _("arrived sum"),
'fillColor' => "#888",
'data' => array_values($arrival_sums)
),
array(
'label' => _("planned departure"),
'fillColor' => "#900",
'data' => array_values($departure_count_at_day)
)
)
)) . ');
......@@ -118,7 +142,8 @@ function admin_arrive() {
table(array(
'day' => _("Date"),
'count' => _("arrived"),
'sum' => _("arrived sum")
'sum' => _("arrived sum"),
'departure' => _("planned departure")
), $arrival_count)
));
}
......
......@@ -25,6 +25,7 @@ function user_settings() {
$selected_theme = $user['color'];
$selected_language = $user['Sprache'];
$planned_arrival_date = $user['planned_arrival_date'];
$planned_departure_date = $user['planned_departure_date'];
if (isset($_REQUEST['submit'])) {
$ok = true;
......@@ -63,7 +64,17 @@ function user_settings() {
$msg .= error(_("Please enter your planned date of arrival."), true);
}
// Trivia
if (isset($_REQUEST['planned_departure_date']) && $_REQUEST['planned_departure_date'] != '') {
if (DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_departure_date']))) {
$planned_departure_date = DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_departure_date']))->getTimestamp();
} else {
$ok = false;
$msg .= error(_("Please enter your planned date of departure."), true);
}
} else
$planned_departure_date = null;
// Trivia
if (isset($_REQUEST['lastname']))
$lastname = strip_request_item('lastname');
if (isset($_REQUEST['prename']))
......@@ -94,7 +105,8 @@ function user_settings() {
`jabber`='" . sql_escape($jabber) . "',
`Size`='" . sql_escape($tshirt_size) . "',
`Hometown`='" . sql_escape($hometown) . "',
`planned_arrival_date`='" . sql_escape($planned_arrival_date) . "'
`planned_arrival_date`='" . sql_escape($planned_arrival_date) . "',
`planned_departure_date`=" . sql_null($planned_departure_date) . "
WHERE `UID`='" . sql_escape($user['UID']) . "'");
success(_("Settings saved."));
......@@ -157,6 +169,7 @@ function user_settings() {
form_text('lastname', _("Last name"), $lastname),
form_text('prename', _("First name"), $prename),
form_date('planned_arrival_date', _("Planned date of arrival") . ' ' . entry_required(), $planned_arrival_date, time()),
form_date('planned_departure_date', _("Planned date of departure"), $planned_departure_date, time()),
form_text('age', _("Age"), $age),
form_text('tel', _("Phone"), $tel),
form_text('dect', _("DECT"), $dect),
......
......@@ -45,6 +45,9 @@ function header_toolbar() {
if ($unconfirmed_hint != '')
$hints[] = $unconfirmed_hint;
if (! isset($user['planned_departure_date']) || $user['planned_departure_date'] == null)
$hints[] = info(_("Please enter your planned date of departure on your settings page to give us a feeling for teardown capacities."), true);
if (User_is_freeloader($user)) {
$hints[] = error(sprintf(_("You freeloaded at least %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again."), $max_freeloadable_shifts), true);
$hint_class = 'danger';
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment