BP 766: added times to reporting dialog
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.html b/src/app/reporting/components/standby-reporting/standby-reporting.component.html
index 7131d52..7bea729 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.html
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.html
@@ -66,59 +66,6 @@
             </div>
           </div>
         </div>
-        <div class="row">
-          <div class="col-md-12 col-sm-12 col-xl-6">
-            <div class="row" formGroupName="date">
-              <label class="form-check-label col-form-label col-md-3">
-                Gültigkeit
-              </label>
-              <div class="col-sm-4">
-                <div class="form-group">
-                  <div class="input-group">
-                    <input class="form-control" placeholder="Von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
-                      formControlName="validFrom" required id="dateFromInput">
-                    <div class="input-group-append">
-                      <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="dateFromPicker">
-                        <i class="fa fa-calendar" aria-hidden="true"></i>
-                      </button>
-                    </div>
-                    <div class="input-group-append">
-                      <button class="btn btn-outline-secondary" (click)="setDefaultDate('validFrom')" type="button" id="dateFromDefault"
-                        data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
-                        <i class="fa fa-clock-o" aria-hidden="true"></i>
-                      </button>
-                    </div>
-                    <ok-error [control]="form.get('date').get('validFrom')" class="w-100"></ok-error>
-                  </div>
-                  <ok-error [control]="form.controls['date']"></ok-error>
-                </div>
-              </div>
-              <div class="col-sm-1">
-                <label class="form-check-label col-form-label col-md-3">-</label>
-              </div>
-              <div class="col-sm-4">
-                <div class="form-group">
-                  <div class="input-group">
-                    <input class="form-control" placeholder="Bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
-                      formControlName="validTo" required id="dateToInput">
-                    <div class="input-group-append">
-                      <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="dateToPicker">
-                        <i class="fa fa-calendar" aria-hidden="true"></i>
-                      </button>
-                    </div>
-                    <div class="input-group-append">
-                      <button class="btn btn-outline-secondary" (click)="setReportDefaultDays(true)" type="button" id="dateToDefault"
-                        data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
-                        <i class="fa fa-clock-o" aria-hidden="true"></i>
-                      </button>
-                    </div>
-                    <ok-error [control]="form.get('date').get('validTo')" class="w-100"></ok-error>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
         <div *ngIf="authService.userHasRoles(['BP_Sachbearbeiter', 'BP_Admin', 'BP_Gruppenleiter'])" class="row">
           <div class="col-md-12 col-sm-12 col-xl-6">
             <div class="form-group row">
@@ -150,6 +97,63 @@
           </div>
         </div>
         <div class="row">
+          <div class="col-md-12 col-sm-12 col-xl-6">
+            <div class="form-group row d-flex align-items-center h-100">
+              <label class="form-check-label col-form-label col-md-3">
+                Gültigkeit Von
+              </label>
+              <div class="input-group col-md-6" formGroupName="date">
+                <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
+                  formControlName="validFrom" required id="validityDateFromInput">
+                <div class="input-group-append">
+                  <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="validityDateFromPicker">
+                    <i class="fa fa-calendar" aria-hidden="true"></i>
+                  </button>
+                </div>
+                <div class="input-group-append">
+                  <button class="btn btn-outline-secondary" (click)="setDefaultDate('validFrom')" type="button" id="validityDateFromDefault"
+                    data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
+                    <i class="fa fa-clock-o" aria-hidden="true"></i>
+                  </button>
+                </div>
+                <ok-error [control]="form.controls['date']" class="w-100"></ok-error>
+                <ok-error [control]="form.get('date').get('validFrom')" class="w-100"></ok-error>
+              </div>
+              <div class="col-md-3">
+                <ngb-timepicker formControlName="validFromTime" id="moveTimePickerFrom"></ngb-timepicker>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col-md-12 col-sm-12 col-xl-6">
+            <div class="form-group row d-flex align-items-center h-100">
+              <label class="form-check-label col-form-label col-md-3">
+                Gültigkeit Bis
+              </label>
+              <div class="input-group col-md-6" formGroupName="date">
+                <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
+                  formControlName="validTo" required id="validityDateToInput">
+                <div class="input-group-append">
+                  <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="validityDateToPicker">
+                    <i class="fa fa-calendar" aria-hidden="true"></i>
+                  </button>
+                </div>
+                <div class="input-group-append">
+                  <button class="btn btn-outline-secondary" (click)="setDefaultDate('validTo')" type="button" id="validityDateToDefault"
+                    data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
+                    <i class="fa fa-clock-o" aria-hidden="true"></i>
+                  </button>
+                </div>
+                <ok-error [control]="form.get('date').get('validTo')" class="w-100"></ok-error>
+              </div>
+              <div class="col-md-3">
+                <ngb-timepicker formControlName="validToTime" id="moveTimePickerTo"></ngb-timepicker>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="row">
           <div class="col-xl-1 col-md-1 col-sm-12 col-12">
             <button class="btn w-100 btn-primary" (click)="generate()" id="btnGenerate">Generieren</button>
           </div>
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
index 1cf41bf..3ec0c59 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
@@ -63,6 +63,7 @@
     if (FormUtil.validate(this.form)) {
       const formValue = this.form.getRawValue();
       FormUtil.formatDates(formValue, ['validFrom', 'validTo']);
+      FormUtil.addTimeToDates(formValue);
       const object = {
         validFrom: formValue.validFrom,
         validTo: formValue.validTo,
@@ -101,6 +102,8 @@
         validFrom: ['', Validators.required],
         validTo: ['', Validators.required],
       }, { validator: [DatepickerValidator.dateRangeTo('')] }),
+      validFromTime: { hour: 12, minute: 0 },
+      validToTime: { hour: 8, minute: 0 },
       printFormat: ['', Validators.required],
       reportLevel: ['Ist-Ebene', Validators.required],
       statusId: 1
diff --git a/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.spec.ts b/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.spec.ts
index 3340efd..7ef8472 100644
--- a/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.spec.ts
+++ b/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.spec.ts
@@ -88,37 +88,6 @@
     });
   });
 
-  describe('test addTimeToDates method', () => {
-    it('should add times to date and result in datestring', () => {
-      const obj = {
-        date: {
-          validFrom: { day: 1, month: 1, year: 2018 },
-          validTo: { day: 1, month: 1, year: 2018 },
-        },
-        validFromTime: { hour: 10, minute: 10 },
-        validToTime: { hour: 12, minute: 10 },
-      };
-
-      FormUtil.formatDates(obj, ['validFrom', 'validTo']);
-      component.addTimeToDates(obj);
-      expect(obj).toBeTruthy();
-    });
-    it('should not change the object if a needed property is not available', () => {
-      const obj = {
-        validFrom: { day: 1, month: 1, year: 2018 },
-        validToTime: { hour: 12, minute: 10 }
-      };
-
-      component.addTimeToDates(obj);
-      expect(obj).toEqual(
-        {
-          validFrom: { day: 1, month: 1, year: 2018 },
-          validToTime: { hour: 12, minute: 10 }
-        }
-      );
-    });
-  });
-
   describe('setDefaultDate', () => {
     it('should set validFrom to current day', () => {
       component.form = new FormGroup({
diff --git a/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.ts b/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.ts
index ba81fc3..2100d46 100644
--- a/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.ts
+++ b/src/app/shared/abstract/abstract-dialog/abstract-dialog.component.ts
@@ -45,15 +45,4 @@
   setDefaultDate(field: string) {
     FormUtil.setDefaultDate(this.form, field);
   }
-
-  addTimeToDates(obj) {
-    // Fixme: make this more generic
-    if (obj.hasOwnProperty('validFrom') && obj.hasOwnProperty('validFromTime')) {
-      obj.validFrom = `${obj.validFrom}T${FormUtil.addZero(obj.validFromTime.hour)}:${FormUtil.addZero(obj.validFromTime.minute)}:00`;
-    }
-    if (obj.hasOwnProperty('validTo') && obj.hasOwnProperty('validToTime')) {
-      obj.validTo = `${obj.validTo}T${FormUtil.addZero(obj.validToTime.hour)}:${FormUtil.addZero(obj.validToTime.minute)}:00`;
-    }
-  }
-
 }
diff --git a/src/app/shared/utils/form.util.spec.ts b/src/app/shared/utils/form.util.spec.ts
index 47bae98..e50ede8 100644
--- a/src/app/shared/utils/form.util.spec.ts
+++ b/src/app/shared/utils/form.util.spec.ts
@@ -155,4 +155,35 @@
             expect(FormUtil.addZero(1234)).toBe('34');
         });
     });
+
+    describe('test addTimeToDates method', () => {
+        it('should add times to date and result in datestring', () => {
+            const obj = {
+                date: {
+                    validFrom: { day: 1, month: 1, year: 2018 },
+                    validTo: { day: 1, month: 1, year: 2018 },
+                },
+                validFromTime: { hour: 10, minute: 10 },
+                validToTime: { hour: 12, minute: 10 },
+            };
+
+            FormUtil.formatDates(obj, ['validFrom', 'validTo']);
+            FormUtil.addTimeToDates(obj);
+            expect(obj).toBeTruthy();
+        });
+        it('should not change the object if a needed property is not available', () => {
+            const obj = {
+                validFrom: { day: 1, month: 1, year: 2018 },
+                validToTime: { hour: 12, minute: 10 }
+            };
+
+            FormUtil.addTimeToDates(obj);
+            expect(obj).toEqual(
+                {
+                    validFrom: { day: 1, month: 1, year: 2018 },
+                    validToTime: { hour: 12, minute: 10 }
+                }
+            );
+        });
+    });
 });
diff --git a/src/app/shared/utils/form.util.ts b/src/app/shared/utils/form.util.ts
index 7548773..079a720 100644
--- a/src/app/shared/utils/form.util.ts
+++ b/src/app/shared/utils/form.util.ts
@@ -136,4 +136,13 @@
     static addZero(num: number) {
         return ('0' + num).slice(-2);
     }
+
+    static addTimeToDates(obj) {
+        if (obj.hasOwnProperty('validFrom') && obj.hasOwnProperty('validFromTime')) {
+          obj.validFrom = `${obj.validFrom}T${FormUtil.addZero(obj.validFromTime.hour)}:${FormUtil.addZero(obj.validFromTime.minute)}:00`;
+        }
+        if (obj.hasOwnProperty('validTo') && obj.hasOwnProperty('validToTime')) {
+          obj.validTo = `${obj.validTo}T${FormUtil.addZero(obj.validToTime.hour)}:${FormUtil.addZero(obj.validToTime.minute)}:00`;
+        }
+      }
 }
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
index 7dba4fb..5e0dede 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
@@ -51,7 +51,7 @@
   decide(decision) {
     const dataToTransmit = this.form.getRawValue();
     FormUtil.formatDates(dataToTransmit, ['validFrom', 'validTo']);
-    this.addTimeToDates(dataToTransmit);
+    FormUtil.addTimeToDates(dataToTransmit);
     delete dataToTransmit.validFromTime;
     delete dataToTransmit.validToTime;
     super.decide(decision, dataToTransmit);
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
index 4e378e9..940f2e6 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
@@ -56,7 +56,7 @@
   decide(decision) {
     const dataToTransmit = this.form.getRawValue();
     FormUtil.formatDates(dataToTransmit, ['validFrom', 'validTo']);
-    this.addTimeToDates(dataToTransmit);
+    FormUtil.addTimeToDates(dataToTransmit);
     delete dataToTransmit.validFromTime;
     delete dataToTransmit.validToTime;
     super.decide(decision, dataToTransmit);