iptdevs-design-system
Version:
Library common elements into IPT Plattform.
99 lines • 14.3 kB
JavaScript
import { Injectable } from '@angular/core';
import Swal from 'sweetalert2';
import * as i0 from "@angular/core";
export class CalculateQuotesService {
constructor() {
this.monthsDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
}
calculateQuotes(params) {
let dataFinancing = [];
let index = 1; // Indicador de cant. de cuotas
let dateJs = new Date(params.date);
let isEndMonth = false;
dateJs.setMilliseconds(dateJs.getMilliseconds() + (1000 * 3600 * 24));
isEndMonth = this.monthsDays[dateJs.getMonth()] === dateJs.getDate();
if (dateJs.getDay() === 0) {
Swal.fire({
title: 'Fecha inválida',
text: 'Debe seleccionar un día de la semana diferente al domingo',
icon: 'error'
});
}
else {
let enrollment = [
index,
Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0
}).format(Math.round(parseFloat(params.totalPrice.toString()))),
this.getStringDate(dateJs)
];
let quota = [
index,
Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0
}).format(Math.round(parseFloat(params.quotaValues.toString()))),
this.getStringDate(dateJs)
];
dataFinancing.push(enrollment);
dataFinancing.push(quota);
while (index < params.quotaTimes) {
index = index + 1;
let newJsDate = this.setPlusOneMonth(dateJs, isEndMonth);
let row = [
index,
Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 0
}).format(Math.round(parseFloat(params.quotaValues.toString()))),
this.getStringDate(newJsDate[newJsDate.length - 1])
];
dataFinancing.push(row);
dateJs = newJsDate[0];
}
}
return dataFinancing;
}
setPlusOneMonth(originDate, isEndMonth) {
let response = [];
let oneDayMilis = 1000 * 3600 * 24;
let day = isEndMonth ? this.monthsDays[(originDate.getMonth() + 1) % 12] : originDate.getDate();
let plusMonthDate = new Date(originDate.getFullYear(), originDate.getMonth() + 1, day);
response.push(new Date(originDate.getFullYear(), originDate.getMonth() + 1, day));
while (plusMonthDate.getDay() === 0) {
plusMonthDate.setMilliseconds(originDate.getMilliseconds() - oneDayMilis);
}
response.push(plusMonthDate);
return response;
}
// setPlusOneMonth2(originDate: Date, isEndMonth: boolean): Date[] {
// let response: Date[] = [];
// let oneDayMilis = 1000 * 3600 * 24;
// let day = isEndMonth ? this.monthsDays[(originDate.getMonth() + 1) % 12] : originDate.getDate();
// let plusMonthDate: Date = new Date(originDate.getFullYear(), originDate.getMonth() + 1, day);
// while (plusMonthDate.getDay() === 0) {
// plusMonthDate.setMilliseconds(plusMonthDate.getMilliseconds() - oneDayMilis);
// }
// response.push(plusMonthDate);
// response.push(new Date(originDate.getFullYear(), originDate.getMonth() + 1, day + 1));
// return response;
// }
getStringDate(originDate) {
let month = originDate.getMonth() + 1;
let stringMonth = month < 10 ? '0' + month : month;
return originDate.getFullYear() + '-' + stringMonth + '-' + originDate.getDate();
}
}
CalculateQuotesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalculateQuotesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
CalculateQuotesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalculateQuotesService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalculateQuotesService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXF1b3Rlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC1zZWxmLW1hbmFnZWQvbG9naWMvY2FsY3VsYXRlLXF1b3Rlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDOztBQVkvQixNQUFNLE9BQU8sc0JBQXNCO0lBSWpDO1FBRkMsZUFBVSxHQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV6RCxDQUFDO0lBRWpCLGVBQWUsQ0FBQyxNQUE2QjtRQUMzQyxJQUFJLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsK0JBQStCO1FBQzlDLElBQUksTUFBTSxHQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUMsSUFBSSxHQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbEUsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXJFLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDO2dC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RSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxGLE9BQU0sYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNsQyxhQUFhLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztTQUMzRTtRQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0IsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSwrQkFBK0I7SUFDL0Isd0NBQXdDO0lBRXhDLHFHQUFxRztJQUNyRyxrR0FBa0c7SUFFbEcsMkNBQTJDO0lBQzNDLHNGQUFzRjtJQUN0RixNQUFNO0lBRU4sa0NBQWtDO0lBQ2xDLDJGQUEyRjtJQUMzRixxQkFBcUI7SUFDckIsSUFBSTtJQUdKLGFBQWEsQ0FBQyxVQUFnQjtRQUM1QixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksV0FBVyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkYsQ0FBQzs7bUhBMUdVLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcblxuZXhwb3J0IGludGVyZmFjZSBDYWxjdWxhdGVRdW90ZXNQYXJhbXMge1xuICBkYXRlOiBEYXRlO1xuICBxdW90YVZhbHVlczogbnVtYmVyO1xuICBxdW90YVRpbWVzOiBhbnk7XG4gIHRvdGFsUHJpY2U6IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FsY3VsYXRlUXVvdGVzU2VydmljZSB7XG5cbiAgIG1vbnRoc0RheXM6IG51bWJlcltdID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgY2FsY3VsYXRlUXVvdGVzKHBhcmFtczogQ2FsY3VsYXRlUXVvdGVzUGFyYW1zKTogYW55W10ge1xuICAgIGxldCBkYXRhRmluYW5jaW5nOiBhbnlbXSA9IFtdO1xuICAgIGxldCBpbmRleCA9IDE7IC8vIEluZGljYWRvciBkZSBjYW50LiBkZSBjdW90YXNcbiAgICBsZXQgZGF0ZUpzID0gIG5ldyBEYXRlKHBhcmFtcy5kYXRlKTtcbiAgICBsZXQgaXNFbmRNb250aCA9IGZhbHNlO1xuXG4gICAgZGF0ZUpzLnNldE1pbGxpc2Vjb25kcyhkYXRlSnMuZ2V0TWlsbGlzZWNvbmRzKCkgKyAoMTAwMCozNjAwKjI0KSk7XG5cbiAgICBpc0VuZE1vbnRoID0gdGhpcy5tb250aHNEYXlzW2RhdGVKcy5nZXRNb250aCgpXSA9PT0gZGF0ZUpzLmdldERhdGUoKTtcblxuICAgIGlmIChkYXRlSnMuZ2V0RGF5KCkgPT09IDApIHtcbiAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgIHRpdGxlOiAnRmVjaGEgaW52w6FsaWRhJyxcbiAgICAgICAgdGV4dDogJ0RlYmUgc2VsZWNjaW9uYXIgdW4gZMOtYSBkZSBsYSBzZW1hbmEgZGlmZXJlbnRlIGFsIGRvbWluZ28nLFxuICAgICAgICBpY29uOiAnZXJyb3InXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG5cbiAgICAgIGxldCBlbnJvbGxtZW50OiBhbnlbXSA9IFtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIEludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwXG4gICAgICAgIH0pLmZvcm1hdChNYXRoLnJvdW5kKHBhcnNlRmxvYXQocGFyYW1zLnRvdGFsUHJpY2UudG9TdHJpbmcoKSkpKSxcbiAgICAgICAgdGhpcy5nZXRTdHJpbmdEYXRlKGRhdGVKcylcbiAgICAgIF07XG5cbiAgICAgIGxldCBxdW90YTogYW55W10gPSBbXG4gICAgICAgIGluZGV4LFxuICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XG4gICAgICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMFxuICAgICAgICB9KS5mb3JtYXQoTWF0aC5yb3VuZChwYXJzZUZsb2F0KHBhcmFtcy5xdW90YVZhbHVlcy50b1N0cmluZygpKSkpLFxuICAgICAgICB0aGlzLmdldFN0cmluZ0RhdGUoZGF0ZUpzKVxuICAgICAgXTtcbiAgICAgIGRhdGFGaW5hbmNpbmcucHVzaChlbnJvbGxtZW50KTtcblxuICAgICAgZGF0YUZpbmFuY2luZy5wdXNoKHF1b3RhKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgcGFyYW1zLnF1b3RhVGltZXMpIHtcbiAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgIGxldCBuZXdKc0RhdGUgPSB0aGlzLnNldFBsdXNPbmVNb250aChkYXRlSnMsIGlzRW5kTW9udGgpO1xuICAgICAgICBsZXQgcm93OiBhbnlbXSA9IFtcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XG4gICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMFxuICAgICAgICAgIH0pLmZvcm1hdChNYXRoLnJvdW5kKHBhcnNlRmxvYXQocGFyYW1zLnF1b3RhVmFsdWVzLnRvU3RyaW5nKCkpKSksXG4gICAgICAgICAgdGhpcy5nZXRTdHJpbmdEYXRlKG5ld0pzRGF0ZVtuZXdKc0RhdGUubGVuZ3RoIC0gMV0pXG4gICAgICAgIF07XG4gICAgICAgIGRhdGFGaW5hbmNpbmcucHVzaChyb3cpXG5cbiAgICAgICAgZGF0ZUpzID0gbmV3SnNEYXRlWzBdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YUZpbmFuY2luZztcbiAgfVxuXG4gIHNldFBsdXNPbmVNb250aChvcmlnaW5EYXRlOiBEYXRlLCBpc0VuZE1vbnRoOiBib29sZWFuKTogRGF0ZVtdIHtcbiAgICBsZXQgcmVzcG9uc2U6IERhdGUgW10gPSBbXTtcblxuICAgIGxldCBvbmVEYXlNaWxpcyA9IDEwMDAgKiAzNjAwICogMjQ7XG5cbiAgICBsZXQgZGF5ID0gaXNFbmRNb250aCA/IHRoaXMubW9udGhzRGF5c1sob3JpZ2luRGF0ZS5nZXRNb250aCgpICsgMSklMTJdOiBvcmlnaW5EYXRlLmdldERhdGUoKTtcbiAgICBsZXQgcGx1c01vbnRoRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKG9yaWdpbkRhdGUuZ2V0RnVsbFllYXIoKSwgb3JpZ2luRGF0ZS5nZXRNb250aCgpICsgMSwgZGF5KTtcblxuICAgIHJlc3BvbnNlLnB1c2gobmV3IERhdGUob3JpZ2luRGF0ZS5nZXRGdWxsWWVhcigpLCBvcmlnaW5EYXRlLmdldE1vbnRoKCkgKyAxLCBkYXkpKTtcblxuICAgIHdoaWxlKHBsdXNNb250aERhdGUuZ2V0RGF5KCkgPT09IDApIHtcbiAgICAgIHBsdXNNb250aERhdGUuc2V0TWlsbGlzZWNvbmRzKG9yaWdpbkRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLSBvbmVEYXlNaWxpcyk7XG4gICAgfVxuXG4gICAgcmVzcG9uc2UucHVzaChwbHVzTW9udGhEYXRlKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICAvLyBzZXRQbHVzT25lTW9udGgyKG9yaWdpbkRhdGU6IERhdGUsIGlzRW5kTW9udGg6IGJvb2xlYW4pOiBEYXRlW10ge1xuICAvLyAgIGxldCByZXNwb25zZTogRGF0ZVtdID0gW107XG4gIC8vICAgbGV0IG9uZURheU1pbGlzID0gMTAwMCAqIDM2MDAgKiAyNDtcblxuICAvLyAgIGxldCBkYXkgPSBpc0VuZE1vbnRoID8gdGhpcy5tb250aHNEYXlzWyhvcmlnaW5EYXRlLmdldE1vbnRoKCkgKyAxKSAlIDEyXSA6IG9yaWdpbkRhdGUuZ2V0RGF0ZSgpO1xuICAvLyAgIGxldCBwbHVzTW9udGhEYXRlOiBEYXRlID0gbmV3IERhdGUob3JpZ2luRGF0ZS5nZXRGdWxsWWVhcigpLCBvcmlnaW5EYXRlLmdldE1vbnRoKCkgKyAxLCBkYXkpO1xuXG4gIC8vICAgd2hpbGUgKHBsdXNNb250aERhdGUuZ2V0RGF5KCkgPT09IDApIHtcbiAgLy8gICAgICAgcGx1c01vbnRoRGF0ZS5zZXRNaWxsaXNlY29uZHMocGx1c01vbnRoRGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIG9uZURheU1pbGlzKTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXNwb25zZS5wdXNoKHBsdXNNb250aERhdGUpO1xuICAvLyAgIHJlc3BvbnNlLnB1c2gobmV3IERhdGUob3JpZ2luRGF0ZS5nZXRGdWxsWWVhcigpLCBvcmlnaW5EYXRlLmdldE1vbnRoKCkgKyAxLCBkYXkgKyAxKSk7XG4gIC8vICAgcmV0dXJuIHJlc3BvbnNlO1xuICAvLyB9XG5cblxuICBnZXRTdHJpbmdEYXRlKG9yaWdpbkRhdGU6IERhdGUpIHtcbiAgICBsZXQgbW9udGggPSBvcmlnaW5EYXRlLmdldE1vbnRoKCkrMTtcbiAgICBsZXQgc3RyaW5nTW9udGggPSBtb250aCA8IDEwID8gJzAnK21vbnRoIDogbW9udGg7XG4gICAgcmV0dXJuIG9yaWdpbkRhdGUuZ2V0RnVsbFllYXIoKSArICctJyArIHN0cmluZ01vbnRoICsgJy0nICsgb3JpZ2luRGF0ZS5nZXREYXRlKCk7XG4gIH1cblxufVxuIl19