import { Component, EventEmitter, OnInit, Output } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import * as moment from 'moment'; import { PublicationFolder } from 'src/app/models/publicationfolder'; import { PublicationsService } from 'src/app/services/publications.service'; import { ToastService } from 'src/app/services/toast.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { NgxMatDateFormats } from '@angular-material-components/datetime-picker'; import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { dateInput: "YYYY-MMMM-DD HH:mm" }, display: { dateInput: "DD MMM YYYY", monthYearLabel: "MMM YYYY", dateA11yLabel: "LL", monthYearA11yLabel: "MMMM YYYY" } } @Component({ selector: 'app-new-action', templateUrl: './new-action.page.html', styleUrls: ['./new-action.page.scss'], providers: [ { provide: NGX_MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }, ] }) export class NewActionPage implements OnInit { folder: PublicationFolder; segment:string; public date: any; public disabled = false; public showSpinners = true; public showSeconds = false; public touchUi = false; public enableMeridian = false; public stepHour = 1; public stepMinute = 15; public stepSecond = 5; currentDate = new Date(); public endMinDate = new Date(new Date().getTime() + 15 * 60000); Form: FormGroup; validateFrom = false @Output() closeDesktopComponent= new EventEmitter(); @Output() getActions= new EventEmitter(); constructor( private publication: PublicationsService, private toastService: ToastService, private httpErrorHandle: HttpErrorHandle, ) { this.folder = new PublicationFolder(); this.setStartDate() this.setEndDate() } ngOnInit() { this.segment = "Evento"; } segmentChanged(ev: any) { } /* get dateValid() { var validado: boolean; if (window.innerWidth <= 800) { if ((this.folder.DateBegin < this.folder.DateEnd) && (new Date(this.folder.DateBegin).getTime() > this.currentDate.getTime())) { validado = true; }else{ validado = false; } return validado == true ? ['ok']: []; } else { return ['ok'] } } */ get dateValid() { return new Date(this.folder.DateBegin).getTime() < new Date(this.folder.DateBegin).getTime() ? 'ok': null } runValidation() { this.validateFrom = true; if((new Date(this.folder.DateBegin).getTime()) > (new Date(this.folder.DateEnd).getTime())) { this.toastService._badRequest("A data de início não pode ser superior a data de fim"); } } injectValidation() { this.Form = new FormGroup({ Subject: new FormControl(this.folder.Description, [ Validators.required, //Validators.minLength(1) ]), Date: new FormControl(this.dateValid, [ Validators.required ]), Detail: new FormControl(this.folder.Detail, [ Validators.required ]) }) } async save() { this.injectValidation() this.runValidation() if(this.Form.invalid) return false this.folder = { ProcessId: null, Description: this.folder.Description, Detail: this.folder.Detail, DateBegin: this.folder.DateBegin, DateEnd: this.folder.DateEnd, ActionType: this.segment, } const loader = this.toastService.loading() try { await this.publication.CreatePublicationFolder(this.folder).toPromise() this.close(); this.httpErrorHandle.httpsSucessMessagge('Acção criada') this.getActions.emit() } catch (error) { this.httpErrorHandle.httpStatusHandle(error) } finally { loader.remove() } } close() { this.closeDesktopComponent.emit(); } round() { let date = new Date(); const minutes = date.getMinutes(); date.setSeconds(0); if(minutes % 15 != 0) { if (minutes > 45) { date.setMinutes(60) } else if (minutes > 30) { date.setMinutes(45) } else if (minutes > 15) { date.setMinutes(30) } else if (minutes > 0) { date.setMinutes(15) } } return date } roundTimeQuarterHour() { let date = new Date(); const minutes = date.getMinutes(); date.setSeconds(0); if(minutes % 15 != 0) { if (minutes > 45) { date.setMinutes(60) } else if (minutes > 30) { date.setMinutes(45) } else if (minutes > 15) { date.setMinutes(30) } else if (minutes > 0) { date.setMinutes(15) } } return date } roundTimeQuarterHourPlus15(date:Date) { const _date = new Date(date); const minutes = _date .getMinutes(); _date .setMinutes(minutes + 15) return _date } setStartDate() { this.folder.DateBegin = this.roundTimeQuarterHour() } setEndDate() { this.folder.DateEnd = this.roundTimeQuarterHourPlus15(this.folder.DateBegin); } }