-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathShiftPresenter.swift
81 lines (68 loc) · 2.39 KB
/
ShiftPresenter.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//
// ShiftPresenter.swift
// Where2Help
//
// Created by Aaron Cruz on 4/8/16.
// Copyright © 2016 Where2Help. All rights reserved.
//
import Foundation
class ShiftPresenter {
typealias Date = (hour: Int, minute: Int, day: Int, weekday: Int, month: Int, year: Int)
let shift: Shift!
var day: Int!
var weekday: Int!
var month: String!
var monthNum: Int!
var year: Int!
var hour: Int!
var minute: Int!
let months = ["Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember"]
let days = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
init(shift: Shift) {
self.shift = shift
let date = startDateFromShift(shift)
day = date.day
weekday = date.weekday
hour = date.month
year = date.year
minute = date.minute
monthNum = date.month
month = monthStringFromInt(date.month)
}
func volunteersOutOfLabelText() -> String {
return "\(shift.volunteersCount)/\(shift.volunteersNeeded)"
}
func timespanLabelText() -> String {
let start = startDateFromShift(shift)
let end = endDateFromShift(shift)
return "\(padZeros(start.hour)):\(padZeros(start.minute)) - \(padZeros(end.hour)):\(padZeros(end.minute))"
}
func dateString() -> String {
// should look "Mo. 20. Juni 2016"
let dayString = days[weekday - 1]
return "\(dayString). \(day). \(month) \(year)"
}
private func padZeros(digits: Int) -> String {
return String(format: "%02d", digits)
}
private func monthStringFromInt(month: Int) -> String {
return months[month-1]
}
private func startDateFromShift(shift: Shift) -> Date {
return getDate(shift.startsAt)
}
private func endDateFromShift(shift: Shift) -> Date {
return getDate(shift.endsAt)
}
private func getDate(date: NSDate) -> Date {
let components = NSCalendar.currentCalendar().components([.Day, .Month, .Year, .Hour, .Minute, .Weekday], fromDate: date)
let day = components.day
let weekday = components.weekday
let month = components.month
let hour = components.hour
let minute = components.minute
let year = components.year
return (hour, minute, day, weekday, month, year)
}
}