{"version":3,"file":"main.a8a60c2d7a3b1875.js","mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA","sources":["./src/app/_common/dateFormats.ts","./src/app/_common/directives/balanceColor.ts","./src/app/_common/directives/numbersOnly.ts","./src/app/_common/guards/auth.guard.ts","./src/app/_common/guards/device.guard.ts","./src/app/_common/models/bankAccountModel.ts","./src/app/_common/models/categoryModel.ts","./src/app/_common/models/categoryReportModel.ts","./src/app/_common/models/dataModel.ts","./src/app/_common/models/expenseModel.ts","./src/app/_common/models/incomeModel.ts","./src/app/_common/models/index.ts","./src/app/_common/models/projectModel.ts","./src/app/_common/models/reportFileModel.ts","./src/app/_common/models/saving/index.ts","./src/app/_common/models/saving/paymentModel.ts","./src/app/_common/models/saving/savingModel.ts","./src/app/_common/models/totalReportModel.ts","./src/app/_common/models/user.ts","./src/app/_common/models/userModel.ts","./src/app/_common/pipes/typeOfCategoryCycle.pipe.ts","./src/app/_helpers/basic-auth.interceptor.ts","./src/app/_helpers/error.interceptor.ts","./src/app/_helpers/index.ts","./src/app/_helpers/lazyTranslateLoader.ts","./src/app/_helpers/myErrorStateMatcher.ts","./src/app/_layouts/main-layout/main-layout.component.ts","./src/app/_layouts/main-layout/main-layout.module.ts","./src/app/_layouts/main-layout/main-layout.routing.ts","./src/app/_services/authentication.service.ts","./src/app/_services/bankAccount.service.ts","./src/app/_services/category.service.ts","./src/app/_services/dataService.ts","./src/app/_services/eventService.ts","./src/app/_services/expense.service.ts","./src/app/_services/helper.service.ts","./src/app/_services/income.service.ts","./src/app/_services/index.ts","./src/app/_services/loan.service.ts","./src/app/_services/loanPayment.service.ts","./src/app/_services/mainLayoutService.ts","./src/app/_services/payment.service.ts","./src/app/_services/project.service.ts","./src/app/_services/report.service.ts","./src/app/_services/saving.service.ts","./src/app/_services/settings.service.ts","./src/app/_services/stateService.ts","./src/app/_services/user.service.ts","./src/app/_shared/category-edit-panel/category-edit-panel.component.ts","./src/app/_shared/category-edit/category-edit.component.ts","./src/app/_shared/delete-dialog/delete-dialog.component.ts","./src/app/_shared/expense-widget/expense-widget.component.ts","./src/app/_shared/shared.module.ts","./src/app/_shared/success-updated/success-updated.component.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/bank-account/bank-account.component.ts","./src/app/category/category.component.ts","./src/app/expenses/expenses.component.ts","./src/app/home/home.component.ts","./src/app/loans/loan-payment-widget/loan-payment-widget.component.ts","./src/app/loans/loan-widget/loan-widget.component.ts","./src/app/loans/loan/loan.component.ts","./src/app/loans/loans-routing.module.ts","./src/app/loans/loans.module.ts","./src/app/loans/loans/loans.component.ts","./src/app/login/login.component.ts","./src/app/savings/payment-widget/payment-widget.component.ts","./src/app/savings/saving-widget/saving-widget.component.ts","./src/app/savings/saving/saving.component.ts","./src/app/savings/savings-routing.module.ts","./src/app/savings/savings.component.ts","./src/app/savings/savings.module.ts","./src/app/settings/settings.component.ts","./src/app/stats/stats.component.ts","./src/app/term-of-use/term-of-use.component.ts","./src/app/years-reports/years-reports.component.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$","./src/assets/i18n/ lazy ^\\.\\/.*\\.json$ namespace object"],"sourcesContent":["export const MY_FORMATS_MONTH = {\r\n parse: {\r\n dateInput: 'MM/YYYY',\r\n },\r\n display: {\r\n dateInput: 'MM/YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n\r\nexport const MY_FORMATS_DATE = {\r\n parse: {\r\n dateInput: 'DD/MM/YYYY',\r\n },\r\n display: {\r\n dateInput: 'DD.MM.YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'DD.MM.YYYY',\r\n },\r\n};\r\n","import { Directive, ElementRef, Input, Pipe, PipeTransform, Renderer2 } from '@angular/core';\r\n\r\n@Directive({ selector: '[balanceColor]' })\r\nexport class BalanceColorDirective {\r\n @Input('balanceColor') balance: number;\r\n\r\n _balance: number;\r\n get balanceColor(): number {\r\n return this._balance;\r\n }\r\n @Input() set balanceColor(value: number) {\r\n this._balance = value;\r\n let color = '#000';\r\n if (value > 0) {\r\n color = '#128102';\r\n } else if (value < 0) {\r\n color = '#ff0000';\r\n }\r\n\r\n this.renderer.setStyle(this.elem.nativeElement, 'color', color);\r\n }\r\n\r\n constructor(private elem: ElementRef, private renderer: Renderer2) {\r\n\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\n\r\n@Directive({\r\n selector: 'input[numbersOnly]'\r\n})\r\nexport class NumbersOnlyDirective {\r\n\r\n @Input('numberRange') numberRange: string = 'positive';\r\n\r\n constructor(private _el: ElementRef) { }\r\n\r\n @HostListener('input', ['$event']) onInputChange(event) {\r\n const initalValue = this._el.nativeElement.value;\r\n this._el.nativeElement.value = initalValue.replace(/[^0-9]*/g, '');\r\n\r\n\r\n if (this.numberRange === 'all' && _.startsWith(initalValue, '-')) {\r\n this._el.nativeElement.value = '-' + this._el.nativeElement.value;\r\n }\r\n\r\n if (initalValue !== this._el.nativeElement.value) {\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { AuthenticationService } from '../../_services';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate, CanActivateChild {\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService\r\n ) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n return true;\r\n }\r\n\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n return false;\r\n }\r\n\r\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n return true;\r\n }\r\n\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\ndeclare let window: any;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DeviceGuard implements CanActivate, CanActivateChild {\r\n private readonly googlePlayUrl: string = 'https://play.google.com/store/apps/details?id=com.expenses.android';\r\n private readonly appStoreUrl: string = 'https://apps.apple.com/us/app/%D7%94%D7%97%D7%99%D7%99%D7%9D-%D7%91%D7%A4%D7%9C%D7%95%D7%A1/id1397736105';\r\n\r\n private readonly appUrl: string = 'expense://home';\r\n\r\n constructor() { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n return this.detectClientAgent();\r\n }\r\n\r\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.detectClientAgent();\r\n }\r\n\r\n private detectClientAgent(): boolean {\r\n const operatingSystem = DeviceGuard.getMobileOperatingSystem();\r\n\r\n if (operatingSystem !== OSType.Unknown) {\r\n this.openPage(operatingSystem === OSType.Android ? this.googlePlayUrl : this.appStoreUrl, this.appUrl);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private static getMobileOperatingSystem(): OSType {\r\n if (window.location.href.indexOf('/policies') !== -1) {\r\n return OSType.Unknown;\r\n }\r\n\r\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n\r\n if (/android/i.test(userAgent)) {\r\n return OSType.Android;\r\n }\r\n\r\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\r\n return OSType.Apple;\r\n }\r\n\r\n return OSType.Unknown;\r\n }\r\n\r\n private openPage(webUrl, appUrl): void {\r\n let loadedAt = +new Date;\r\n let interval = setInterval(function () {\r\n let res = +new Date - loadedAt;\r\n if (res > 1000) {\r\n clearInterval(interval);\r\n window.location.href = webUrl;\r\n }\r\n }, 25);\r\n\r\n // Try launching the app using URL schemes\r\n window.location.href = appUrl;\r\n }\r\n}\r\n\r\nexport enum OSType {\r\n Apple,\r\n Android,\r\n Unknown\r\n}\r\n","export class BankAccountModel {\r\n year: number;\r\n month: number;\r\n startStatus: number;\r\n endStatus: number;\r\n projectId: number;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","export class CategoryModel {\r\n id: number;\r\n createdDate: string;\r\n userId: number;\r\n name: string;\r\n budget: number;\r\n description: string;\r\n type: TypeOfCategoryCycle;\r\n isSendExpensesPushNotification: boolean;\r\n categoryType: CategoryType;\r\n budgetDate: string;\r\n notes: string;\r\n projectId: number;\r\n isYearlySupport: boolean;\r\n yearlyBudget: number;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport enum TypeOfCategoryCycle {\r\n Monthly = 0,\r\n Weekly = 1,\r\n Business1 = 2,\r\n Business2 = 3,\r\n OneTime = 4,\r\n AdHoc = 5\r\n}\r\n\r\nexport enum CategoryType {\r\n Expense = 0,\r\n Income = 1\r\n}\r\n","import { CategoryModel } from '.';\r\n\r\nexport class CategoryReportModel {\r\n category: CategoryModel;\r\n expensesSum: number;\r\n yearlyExpensesSum: number;\r\n yearlyIncomesSum: number;\r\n currentPeriodBudget: number;\r\n\r\n public constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import { Moment } from 'moment';\r\n\r\nexport class DataModel {\r\n date: Moment;\r\n}\r\n","export class ExpenseModel {\r\n id: number;\r\n createdDate: string;\r\n userId: number;\r\n categoryId: number;\r\n amount: number;\r\n description: string;\r\n spenderName: string;\r\n type: TypeOfPay;\r\n expenseDateTime: string;\r\n ADID: string;\r\n typeOfExpense: ExpensesType;\r\n countOfTimes: number;\r\n totalAmount: number;\r\n isEditable: boolean;\r\n projectId: number;\r\n}\r\n\r\nexport enum TypeOfPay {\r\n CreditCard = 0,\r\n Cash = 1,\r\n Check = 2,\r\n BankTransfer = 3,\r\n Refundable = 4,\r\n CreditCard2 = 5,\r\n Other1 = 6,\r\n Other2 = 7,\r\n CreditCard3 = 8,\r\n CreditCard4 = 9,\r\n Other3 = 10,\r\n Other4 = 11\r\n}\r\n\r\nexport enum ExpensesType {\r\n Expense = 0,\r\n Payments = 1,\r\n DirectDebit = 2\r\n}\r\n","export class IncomeModel {\r\n id: number;\r\n createdDate: string;\r\n userId: number;\r\n categoryId: number;\r\n amount: number;\r\n description: string;\r\n incomeDateTime: string;\r\n type: TypeOfIncome;\r\n incomeVia: TypeIncomeVia;\r\n projectId: number;\r\n}\r\n\r\nexport enum TypeOfIncome {\r\n Salary = 0,\r\n Refunds = 1,\r\n Gifts = 2,\r\n BusinessToHome1 = 3, //Transfer from business 1 to home\r\n BusinessToHome2 = 4, //Transfer from business 2 to home\r\n Business1 = 5,\r\n Business2 = 6,\r\n Other = 7\r\n}\r\n\r\nexport enum TypeIncomeVia {\r\n Credit = 0,\r\n Check = 1,\r\n BankTransfer = 2,\r\n Cash = 3,\r\n Other = 4\r\n}\r\n","export * from './user';\r\nexport * from './categoryModel';\r\nexport * from './categoryReportModel';\r\nexport * from './totalReportModel';\r\nexport * from './projectModel';\r\nexport * from './expenseModel';\r\nexport * from './incomeModel';\r\nexport * from './reportFileModel';\r\nexport * from './dataModel';\r\nexport * from './bankAccountModel';\r\nexport * from './userModel';\r\n","export class ProjectModel {\r\n id: number;\r\n name: string;\r\n userId: number;\r\n isSendExpensesPushNotification: boolean;\r\n isBusiness: boolean;\r\n type: ProjectType;\r\n adHocType: AdHocProjectType;\r\n startDate: string;\r\n endDate: string;\r\n}\r\n\r\nexport enum ProjectType { Basic = 0, AdHoc = 1 }\r\n\r\nexport enum AdHocProjectType { BuildingAHouseRenovation = 0, MovingToANewApartment = 1, Vacation = 2, Event = 3, Other = 4 }\r\n","export class ReportFileModel {\r\n url: string;\r\n}\r\n","export * from './savingModel';\r\nexport * from './paymentModel';\r\n","export interface PaymentModel {\r\n id: number,\r\n userId?: number,\r\n type: SavingPaymentType,\r\n depositType: SavingDepositType,\r\n amount: number,\r\n savingId: number,\r\n description: string,\r\n dateTime: string,\r\n isEditable: boolean,\r\n isFullAmount: boolean\r\n}\r\n\r\nexport enum SavingPaymentType {\r\n Deposit = 0,\r\n Withdrawal = 1\r\n}\r\n\r\nexport enum SavingDepositType {\r\n Deposit = 0,\r\n FixedMonthlyDeposit = 1,\r\n YieldUpdateShekels = 2\r\n}\r\n","export interface SavingModel {\r\n id: number;\r\n userId?: number;\r\n name: string;\r\n description: string;\r\n startingAmount: number;\r\n goalAmount: number;\r\n goalDate: string;\r\n\r\n totalDepositsAmount: number;\r\n totalWithdrawalAmount: number;\r\n monthsLeft: number;\r\n}\r\n","export class TotalReportModel {\r\n expensesSum: number;\r\n incomesSum: number;\r\n}\r\n","export class User {\r\n id: number;\r\n username: string;\r\n password: string;\r\n firstName: string;\r\n lastName: string;\r\n access_token: string;\r\n user: any;\r\n}\r\n","export class UserModel {\r\n id: number;\r\n name: string;\r\n email: string;\r\n photoUrl: string;\r\n endDate?: string;\r\n startMonthDay: number;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'typeOfCategoryCycle'\r\n})\r\nexport class TypeOfCategoryCyclePipe implements PipeTransform {\r\n transform(value: number): any {\r\n switch (value) {\r\n case 0:\r\n case 2:\r\n case 3:\r\n return 'חודשי';\r\n case 1:\r\n return 'שבועי';\r\n case 4:\r\n case 5:\r\n return 'חד פעמי';\r\n default:\r\n return '';\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthenticationService } from '../_services';\r\nimport { environment } from '../../environments/environment';\r\n\r\n@Injectable()\r\nexport class BasicAuthInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n // add authorization header with basic auth credentials if available\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser && currentUser.access_token) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${currentUser.access_token}`\r\n }\r\n });\r\n }\r\n\r\n //if (environment.production) {\r\n // request = request.clone({\r\n // url: `https://ronit-t.com/${request.url}`\r\n // });\r\n //}\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { AuthenticationService } from '../_services';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error.message || err.statusText;\r\n return throwError(error);\r\n }))\r\n }\r\n}\r\n","export * from './basic-auth.interceptor';\r\nexport * from './error.interceptor';\r\nexport * from './myErrorStateMatcher';\r\n","import { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable, from } from 'rxjs';\r\n\r\nexport class LazyTranslateLoader implements TranslateLoader {\r\n getTranslation(lang: string): Observable {\r\n return from(import(`../../assets/i18n/${lang}.json`));\r\n }\r\n}\r\n","import { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\n\r\n/** Error when invalid control is dirty, touched, or submitted. */\r\nexport class MyErrorStateMatcher implements ErrorStateMatcher {\r\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport {\r\n AuthenticationService,\r\n ReportService,\r\n EventService,\r\n ObjectType,\r\n EventType,\r\n HelperService,\r\n MainLayoutService,\r\n ScrollEventType,\r\n UserService,\r\n} from '../../_services';\r\nimport { Subject } from 'rxjs';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { CategoryType, UserModel } from '@app/_common/models';\r\nimport { CategoryEditComponent } from '@app/_shared/category-edit/category-edit.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SavingWidgetComponent } from '@app/savings/saving-widget/saving-widget.component';\r\nimport { LoanWidgetComponent } from '@app/loans/loan-widget/loan-widget.component';\r\nimport { ExpenseWidgetComponent } from '@app/_shared/expense-widget/expense-widget.component';\r\nimport { SettingsComponent } from '@app/settings/settings.component';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\nexport enum SidebarType {\r\n Expenses,\r\n Savings,\r\n Loans,\r\n}\r\n\r\n@Component({\r\n selector: 'app-main-layout',\r\n templateUrl: './main-layout.component.html',\r\n styleUrls: ['./main-layout.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class MainLayoutComponent implements OnInit, OnDestroy {\r\n private date: Moment;\r\n private currentProjectId: number;\r\n\r\n SidebarType = SidebarType;\r\n sidebarType: SidebarType = SidebarType.Expenses;\r\n\r\n currentUser: UserModel;\r\n\r\n @ViewChild('mainWrapper', { static: true }) mainWrapper: ElementRef;\r\n\r\n private destroy$: Subject = new Subject();\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private eventService: EventService,\r\n private reportService: ReportService,\r\n private helperService: HelperService,\r\n private mainLayoutService: MainLayoutService,\r\n private userService: UserService,\r\n public dialog: MatDialog\r\n ) {\r\n router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe((data: NavigationEnd) => {\r\n if (data.url.indexOf('/savings') > -1) {\r\n this.sidebarType = SidebarType.Savings;\r\n } else if (data.url.indexOf('/loans') > -1) {\r\n this.sidebarType = SidebarType.Loans;\r\n } else {\r\n this.sidebarType = SidebarType.Expenses;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadCurrentUser();\r\n this.date = this.helperService.getMonthStartDate();\r\n this.initEvents();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n initEvents(): void {\r\n this.eventService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (\r\n event.objectType === ObjectType.Project &&\r\n event.type === EventType.Select\r\n ) {\r\n this.currentProjectId = event.object;\r\n }\r\n if (\r\n event.objectType === ObjectType.Date &&\r\n event.type === EventType.Select\r\n ) {\r\n this.date = event.object;\r\n }\r\n });\r\n\r\n this.mainLayoutService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (event.eventType === ScrollEventType.ToTop) {\r\n this.mainWrapper.nativeElement.scrollTop = 0;\r\n }\r\n });\r\n }\r\n\r\n downloadReport() {\r\n let year: number, month: number;\r\n if (this.date) {\r\n year = this.date.year();\r\n month = this.date.month() + 1;\r\n }\r\n\r\n this.reportService\r\n .generateMonthReport(null, year, month, this.currentProjectId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n window.open(data.url, '_blank');\r\n });\r\n }\r\n\r\n logout(): void {\r\n this.authenticationService.logout();\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n loadCurrentUser(): void {\r\n this.userService\r\n .getMe()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.currentUser = data;\r\n });\r\n }\r\n\r\n createCategory(): void {\r\n this.isMenuOpen = false;\r\n this.dialog.open(CategoryEditComponent, {\r\n data: {},\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n\r\n createSaving(): void {\r\n this.isMenuOpen = false;\r\n this.dialog.open(SavingWidgetComponent, {\r\n data: null,\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n\r\n createLoan(): void {\r\n this.isMenuOpen = false;\r\n this.dialog.open(LoanWidgetComponent, {\r\n data: null,\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n\r\n createExpense(): void {\r\n this.isMenuOpen = false;\r\n this.dialog.open(ExpenseWidgetComponent, {\r\n data: {\r\n categoryType: CategoryType.Expense,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n\r\n createIncome(): void {\r\n this.isMenuOpen = false;\r\n this.dialog.open(ExpenseWidgetComponent, {\r\n data: {\r\n categoryType: CategoryType.Income,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n\r\n isMenuOpen: boolean = false;\r\n changeMenuState(state: boolean): void {\r\n if (this.isMenuOpen) {\r\n setTimeout(() => {\r\n this.isMenuOpen = state;\r\n }, 200);\r\n } else {\r\n this.isMenuOpen = state;\r\n }\r\n }\r\n\r\n openSettings(): void {\r\n this.dialog.open(SettingsComponent, {\r\n data: {},\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { RouterModule } from '@angular/router';\r\nimport { LoansModule } from '@app/loans/loans.module';\r\nimport { SavingsModule } from '@app/savings/savings.module';\r\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\r\nimport { SharedModule } from '../../_shared/shared.module';\r\nimport { MainLayoutComponent } from './main-layout.component';\r\nimport { MainLayoutRoutes } from './main-layout.routing';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\n@NgModule({\r\n imports: [\r\n SharedModule,\r\n RouterModule.forChild(MainLayoutRoutes),\r\n MatIconModule,\r\n MatMenuModule,\r\n SavingsModule,\r\n LoansModule,\r\n PerfectScrollbarModule,\r\n ],\r\n declarations: [MainLayoutComponent],\r\n})\r\nexport class MainLayoutModule {}\r\n","import { Routes } from '@angular/router';\r\nimport { MainLayoutComponent } from './main-layout.component';\r\n\r\n\r\nexport const MainLayoutRoutes: Routes = [\r\n\r\n];\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { User } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject;\r\n public currentUser: Observable;\r\n\r\n constructor(private http: HttpClient) {\r\n this.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser')));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n\r\n public get currentUserValue(): User {\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n login(username: string, password: string) {\r\n const payload = new HttpParams()\r\n .set('username', username)\r\n .set('password', password)\r\n .set('grant_type', 'password');\r\n\r\n return this.http.post(`/api/account/login`, payload)\r\n .pipe(map(user => {\r\n // store user details and basic auth credentials in local storage to keep user logged in between page refreshes\r\n //user.authdata = window.btoa(username + ':' + password);\r\n localStorage.setItem('currentUser', JSON.stringify(user));\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n localStorage.removeItem('currentUser');\r\n localStorage.removeItem('selectedDate');\r\n this.currentUserSubject.next(null);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BankAccountModel } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BankAccountService {\r\n constructor(private http: HttpClient) {}\r\n\r\n get(projectId: number, year: number, month: number) {\r\n return this.http.get(\r\n `api/bankAccount/${projectId}/${year}/${month}`\r\n );\r\n }\r\n\r\n update(model: BankAccountModel) {\r\n return this.http.put(`api/bankAccount`, model);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CategoryModel } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CategoryService {\r\n constructor(private http: HttpClient) {}\r\n\r\n get(id: number) {\r\n return this.http.get(`api/categories/${id}`);\r\n }\r\n\r\n save(category: CategoryModel) {\r\n return this.http.post(`api/categories`, category);\r\n }\r\n\r\n update(category: CategoryModel) {\r\n return this.http.put(`api/categories`, category);\r\n }\r\n\r\n delete(id: number) {\r\n return this.http.delete(`api/categories?id=${id}`);\r\n }\r\n\r\n statsExpensesList(projectId: number) {\r\n return this.http.get(\r\n `api/categories/statsExpensesList?project=${projectId}`\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { DataModel } from '../_common/models';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DataService {\r\n private dataSource = new BehaviorSubject(new DataModel());\r\n data = this.dataSource.asObservable();\r\n\r\n constructor() { }\r\n\r\n updatedDataSelection(data: DataModel) {\r\n this.dataSource.next(data);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class EventService {\r\n private subject = new Subject();\r\n\r\n getUpdate(): Observable<{\r\n type: EventType;\r\n objectType: ObjectType;\r\n object: any;\r\n }> {\r\n return this.subject.asObservable();\r\n }\r\n\r\n send(event: { type: EventType; objectType: ObjectType; object: any }): void {\r\n this.subject.next(event);\r\n }\r\n}\r\n\r\nexport enum EventType {\r\n Create,\r\n Update,\r\n Delete,\r\n Select,\r\n}\r\n\r\nexport enum ObjectType {\r\n Category,\r\n Expense,\r\n Income,\r\n Project,\r\n Date,\r\n Saving,\r\n SavingPayment,\r\n Loan,\r\n LoanPayment,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ExpenseModel, ReportFileModel } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ExpenseService {\r\n constructor(private http: HttpClient) { }\r\n\r\n save(model: ExpenseModel) {\r\n return this.http.post(`api/expenses`, model);\r\n }\r\n\r\n update(model: ExpenseModel) {\r\n return this.http.put(`api/expenses`, model);\r\n }\r\n\r\n delete(id: number, year: number, month: number) {\r\n return this.http.delete(`api/expenses?id=${id}&year=${year}&month=${month}`);\r\n }\r\n\r\n list(size: number, offset: number, categoryId: number, userId: number, year: string, month: string, projectId: number, type: number = null, expensesType: number = null, search: string = null) {\r\n let url = `api/expenses/list/${size}/${offset}?categoryId=${categoryId}&userId=${userId}&year=${year}&month=${month}&project=${projectId}&type=${type}&expensesType=${expensesType}`;\r\n if (search) {\r\n url += `&search=${search}`;\r\n }\r\n\r\n return this.http.get(url);\r\n }\r\n\r\n export(categoryId: number, userId: number, year: string, month: string, projectId: number, type: number = null, expensesType: number = null) {\r\n return this.http.get(`api/expenses/export?categoryId=${categoryId}&userId=${userId}&year=${year}&month=${month}&project=${projectId}&type=${type}&expensesType=${expensesType}&addTotal=true`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HelperService {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n getMonthStartDate(date?: Moment): Moment {\r\n if (!date) {\r\n date = moment();\r\n }\r\n\r\n if (this.authenticationService.currentUserValue.user.startMonthDay > date.date()) {\r\n date.add(-1, 'months');\r\n }\r\n\r\n return moment(new Date(date.year(), date.month(), this.authenticationService.currentUserValue.user.startMonthDay), null, 'he');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { IncomeModel } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IncomeService {\r\n constructor(private http: HttpClient) { }\r\n\r\n save(model: IncomeModel) {\r\n return this.http.post(`api/incomes`, model);\r\n }\r\n\r\n update(model: IncomeModel) {\r\n return this.http.put(`api/incomes`, model);\r\n }\r\n\r\n delete(id: number, year: number, month: number) {\r\n return this.http.delete(`api/incomes?id=${id}&year=${year}&month=${month}`);\r\n }\r\n\r\n list(size: number, offset: number, categoryId: number, userId: number, year: string, month: string, search: string = null) {\r\n let url = `api/incomes/list/${size}/${offset}?categoryId=${categoryId}&userId=${userId}&year=${year}&month=${month}`;\r\n\r\n if (search) {\r\n url += `&search=${search}`;\r\n }\r\n\r\n return this.http.get(url);\r\n }\r\n}\r\n","export * from './authentication.service';\r\nexport * from './user.service';\r\nexport * from './report.service';\r\nexport * from './category.service';\r\nexport * from './project.service';\r\nexport * from './expense.service';\r\nexport * from './income.service';\r\nexport * from './eventService';\r\nexport * from './helper.service';\r\nexport * from './dataService';\r\nexport * from './mainLayoutService';\r\nexport * from './settings.service';\r\nexport * from './bankAccount.service';\r\nexport * from './saving.service';\r\nexport * from './payment.service';\r\nexport * from './loan.service';\r\nexport * from './loanPayment.service';\r\nexport * from './stateService';\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { LoanModel } from '../_common/models/loan';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoanService {\r\n constructor(private http: HttpClient) { }\r\n\r\n get(id: number) {\r\n return this.http.get(`api/v1/loan/${id}`);\r\n }\r\n\r\n save(loan: LoanModel) {\r\n return this.http.post(`api/v1/loan`, loan);\r\n }\r\n\r\n update(loan: LoanModel) {\r\n return this.http.put(`api/v1/loan`, loan);\r\n }\r\n\r\n delete(id: number) {\r\n return this.http.delete(`api/v1/loan?id=${id}`);\r\n }\r\n\r\n list(loanId?: number, offset: number = 0, size?: number, userId?: number, search?: string, withSummary: boolean = true, year?: number, month?: number): Observable {\r\n let query = `offset=${offset}&withSummary=${withSummary}`;\r\n\r\n if (size) {\r\n query += `&size=${size}`;\r\n }\r\n\r\n if (userId) {\r\n query += `&userId=${userId}`;\r\n }\r\n\r\n if (search) {\r\n query += `&search=${search}`;\r\n }\r\n\r\n if (year) {\r\n query += `&year=${year}`;\r\n }\r\n\r\n if (month) {\r\n query += `&month=${month}`;\r\n }\r\n\r\n if (loanId) {\r\n query += `&loanId=${loanId}`;\r\n }\r\n\r\n return this.http.get(`api/v1/loan/list?${query}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { LoanPaymentModel } from '../_common/models/loan';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoanPaymentService {\r\n constructor(private http: HttpClient) { }\r\n\r\n save(model: LoanPaymentModel) {\r\n return this.http.post(`api/v1/loanPayment`, model);\r\n }\r\n\r\n update(model: LoanPaymentModel) {\r\n return this.http.put(`api/v1/loanPayment`, model);\r\n }\r\n\r\n delete(id: number, year: number, month: number) {\r\n return this.http.delete(`api/v1/loanPayment?id=${id}&year=${year}&month=${month}`);\r\n }\r\n\r\n list(offset: number, size: number, loanId: number, year: string, month: string, userId?: number,) {\r\n let query = `offset=${offset}&loanId=${loanId}&year=${year}&month=${month}`;\r\n\r\n if (size) {\r\n query += `size=${size}`;\r\n }\r\n\r\n if (userId) {\r\n query += `size=${userId}`;\r\n }\r\n\r\n return this.http.get(`api/v1/loanPayment/list?${query}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MainLayoutService {\r\n private subject = new Subject();\r\n\r\n constructor() { }\r\n\r\n getUpdate(): Observable<{ eventType: ScrollEventType }> {\r\n return this.subject.asObservable();\r\n }\r\n\r\n send(event: {eventType: ScrollEventType }): void {\r\n this.subject.next(event);\r\n }\r\n}\r\n\r\nexport enum ScrollEventType {\r\n ToTop\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { PaymentModel } from '../_common/models/saving';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PaymentService {\r\n constructor(private http: HttpClient) { }\r\n\r\n save(model: PaymentModel) {\r\n return this.http.post(`api/v1/payment`, model);\r\n }\r\n\r\n update(model: PaymentModel) {\r\n return this.http.put(`api/v1/payment`, model);\r\n }\r\n\r\n delete(id: number, year: number, month: number) {\r\n return this.http.delete(`api/v1/payment?id=${id}&year=${year}&month=${month}`);\r\n }\r\n\r\n list(offset: number, size: number, savingId: number, year: string, month: string, userId?: number,) {\r\n let query = `offset=${offset}&savingId=${savingId}&year=${year}&month=${month}`;\r\n\r\n if (size) {\r\n query += `size=${size}`;\r\n }\r\n\r\n if (userId) {\r\n query += `size=${userId}`;\r\n }\r\n\r\n return this.http.get(`api/v1/payment/list?${query}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ProjectModel } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ProjectService {\r\n constructor(private http: HttpClient) { }\r\n\r\n list(userId: number) {\r\n return this.http.get(`api/projects/list?userId=${userId}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport {\r\n CategoryReportModel,\r\n TotalReportModel,\r\n ReportFileModel,\r\n} from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ReportService {\r\n constructor(private http: HttpClient) {}\r\n\r\n get(\r\n all: boolean,\r\n userId: number,\r\n year: number,\r\n month: number,\r\n projectId: number\r\n ) {\r\n return this.http.get(\r\n `api/reports?all=${all}&userId=${userId}&year=${year}&month=${month}&project=${projectId}`\r\n );\r\n }\r\n\r\n getTotal(\r\n userId: number,\r\n type: any,\r\n expensesType: any,\r\n year: string,\r\n month: string,\r\n projectId: any\r\n ): any {\r\n return this.http.get(\r\n `api/reports/total?userId=${userId}&type=${type}&expensesType=${expensesType}&year=${year}&month=${month}&project=${projectId}`\r\n );\r\n }\r\n\r\n getCategory(\r\n categoryId: number,\r\n userId: number,\r\n year: string,\r\n month: string\r\n ): any {\r\n return this.http.get(\r\n `api/reports/${categoryId}?userId=${userId}&year=${year}&month=${month}`\r\n );\r\n }\r\n\r\n generateMonthReport(\r\n userId: number,\r\n year: number,\r\n month: number,\r\n projectId: number\r\n ) {\r\n return this.http.get(\r\n `api/reports/generateMonthReport?userId=${userId}&year=${year}&month=${month}&project=${projectId}`\r\n );\r\n }\r\n\r\n getCategoriesYearlyReport(categoryIds): any {\r\n return this.http.post<{ months: { date: string; amount: number }[] }>(\r\n `api/reports/yearly/categories`,\r\n categoryIds\r\n );\r\n }\r\n\r\n getYearsReportByCategories(model: {\r\n startYear: number;\r\n endYear: number;\r\n projectId: number;\r\n }): any {\r\n return this.http.post<{ months: { date: string; amount: number }[] }>(\r\n `api/reports/years/categories`,\r\n model\r\n );\r\n }\r\n\r\n generateYearsReportByCategories(model: {\r\n startYear: number;\r\n endYear: number;\r\n projectId: number;\r\n }): any {\r\n return this.http.post<{ months: { date: string; amount: number }[] }>(\r\n `api/reports/years/categories/generate`,\r\n model\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { SavingModel } from '../_common/models/saving';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SavingService {\r\n constructor(private http: HttpClient) {}\r\n\r\n get(id: number) {\r\n return this.http.get(`api/v1/saving/${id}`);\r\n }\r\n\r\n save(saving: SavingModel) {\r\n return this.http.post(`api/v1/saving`, saving);\r\n }\r\n\r\n update(saving: SavingModel) {\r\n return this.http.put(`api/v1/saving`, saving);\r\n }\r\n\r\n delete(id: number) {\r\n return this.http.delete(`api/v1/saving?id=${id}`);\r\n }\r\n\r\n list(\r\n savingId?: number,\r\n offset: number = 0,\r\n size?: number,\r\n userId?: number,\r\n search?: string,\r\n withSummary: boolean = true,\r\n year?: number,\r\n month?: number\r\n ): Observable {\r\n let query = `offset=${offset}&withSummary=${withSummary}`;\r\n\r\n if (size) {\r\n query += `&size=${size}`;\r\n }\r\n\r\n if (userId) {\r\n query += `&userId=${userId}`;\r\n }\r\n\r\n if (search) {\r\n query += `&search=${search}`;\r\n }\r\n\r\n if (year) {\r\n query += `&year=${year}`;\r\n }\r\n\r\n if (month) {\r\n query += `&month=${month}`;\r\n }\r\n\r\n if (savingId) {\r\n query += `&savingId=${savingId}`;\r\n }\r\n\r\n return this.http.get(`api/v1/saving/list?${query}`);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TypeOfPay } from '@app/_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SettingsService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n get() {\r\n return this.http.get<{ type: TypeOfPay, name: string }[]>(`api/settings/paymentTypes`);\r\n }\r\n\r\n update(model: any) {\r\n return this.http.put(`api/settings/paymentType`, model);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StateService {\r\n public projectId?: number;\r\n public categoryId?: number;\r\n\r\n setValues(projectId?: number, categoryId?: number) {\r\n this.projectId = projectId;\r\n this.categoryId = categoryId;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { User, UserModel } from '../_common/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserService {\r\n constructor(private http: HttpClient) { }\r\n\r\n getAll() {\r\n return this.http.get(`api/users`);\r\n }\r\n\r\n agreeTermsOfUse() {\r\n return this.http.put(`api/users/agreeTermsOfUse`, {});\r\n }\r\n\r\n forgotPassword(model: { email: string }) {\r\n return this.http.post(`api/users/forgotPassword`, model);\r\n }\r\n\r\n getMe() {\r\n return this.http.get(`api/users/me`);\r\n }\r\n\r\n update(user: UserModel) {\r\n return this.http.put(`api/users`, user);\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport {\r\n UntypedFormGroup,\r\n UntypedFormBuilder,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n CategoryService,\r\n ProjectService,\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n AuthenticationService,\r\n HelperService,\r\n} from '@app/_services';\r\nimport {\r\n CategoryType,\r\n TypeOfCategoryCycle,\r\n ProjectModel,\r\n CategoryModel,\r\n ProjectType,\r\n} from '@app/_common/models';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport * as _ from 'lodash';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-category-edit-panel',\r\n templateUrl: './category-edit-panel.component.html',\r\n styleUrls: ['./category-edit-panel.component.scss'],\r\n})\r\nexport class CategoryEditPanelComponent implements OnInit {\r\n _category: CategoryModel;\r\n get category(): CategoryModel {\r\n return this._category;\r\n }\r\n\r\n @Input('category')\r\n set category(value: CategoryModel) {\r\n this._category = value;\r\n this.initCategory();\r\n }\r\n\r\n @Input() startMonthDate: Moment;\r\n @Output() update: EventEmitter =\r\n new EventEmitter();\r\n @Output() cancel: EventEmitter = new EventEmitter();\r\n\r\n categoryForm: UntypedFormGroup;\r\n\r\n categoryTypes: { id: number; value: string }[] = [\r\n {\r\n id: CategoryType.Expense,\r\n value: 'הוצאה',\r\n },\r\n {\r\n id: CategoryType.Income,\r\n value: 'הכנסה',\r\n },\r\n ];\r\n\r\n typeOfCategoryCycle: { id: number; value: string }[] = [\r\n {\r\n id: TypeOfCategoryCycle.Monthly,\r\n value: 'חודשי',\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Weekly,\r\n value: 'שבועי', // \"Weekly\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Business1,\r\n value: 'עסק 1', // \"Business1\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Business2,\r\n value: 'עסק 2', // \"Business2\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.OneTime,\r\n value: 'רק החודש', // \"OneTime\"\r\n },\r\n //{\r\n // \"id\": TypeOfCategoryCycle.AdHoc,\r\n // \"value\": \"AdHoc\"\r\n //}\r\n ];\r\n\r\n bussinesTypeOfCategoryCycle: { id: number; value: string }[] = [\r\n {\r\n id: TypeOfCategoryCycle.Monthly,\r\n value: 'חודשי',\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Weekly,\r\n value: 'שבועי', // \"Weekly\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.OneTime,\r\n value: 'רק החודש', // \"OneTime\"\r\n },\r\n ];\r\n\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n private subs: Subscription = new Subscription();\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private authenticationService: AuthenticationService,\r\n private categoryService: CategoryService,\r\n private projectService: ProjectService,\r\n private eventService: EventService,\r\n private toastr: ToastrService,\r\n private helperService: HelperService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.initCategory();\r\n\r\n this.subs.add(\r\n this.projectService.list(null).subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n this.currentProject = this.projects.find(\r\n x => x.id === (this.category || { projectId: 0 }).projectId\r\n );\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n this.categoryForm.controls['projectId'].setValue(\r\n this.currentProject.id\r\n );\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n initCategory() {\r\n if (this.category) {\r\n this.categoryForm = this.formBuilder.group({\r\n name: [this.category.name, Validators.required],\r\n budget: [this.category.budget, Validators.required],\r\n notes: [this.category.notes],\r\n categoryType: [this.category.categoryType, Validators.required],\r\n type: [this.category.type, Validators.required],\r\n projectId: [this.category.projectId, Validators.required],\r\n });\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === this.category.projectId\r\n );\r\n } else {\r\n this.categoryForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n budget: ['', Validators.required],\r\n notes: [''],\r\n categoryType: [this.categoryTypes[0].id, Validators.required],\r\n type: [this.typeOfCategoryCycle[0].id, Validators.required],\r\n projectId: ['', Validators.required],\r\n });\r\n\r\n if (this.projects.length > 0) {\r\n this.currentProject = this.projects[0];\r\n this.categoryForm.controls['projectId'].setValue(\r\n this.currentProject.id\r\n );\r\n }\r\n }\r\n }\r\n\r\n updateProject(event: any): void {\r\n this.currentProject = this.projects.find(x => x.id === event.value);\r\n if (\r\n this.currentProject.isBusiness &&\r\n this.bussinesTypeOfCategoryCycle.some(\r\n x => x.id === this.categoryForm.value.type\r\n ) === false\r\n ) {\r\n this.categoryForm.controls['type'].setValue(\r\n this.bussinesTypeOfCategoryCycle[0].id\r\n );\r\n }\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.categoryForm.value;\r\n oldValue.name = '';\r\n oldValue.budget = '';\r\n\r\n event.target.reset();\r\n this.categoryForm.reset(oldValue);\r\n }\r\n\r\n submit(event: any): void {\r\n if (this.categoryForm.invalid) {\r\n return;\r\n }\r\n\r\n if (this.currentProject.type === ProjectType.AdHoc) {\r\n this.categoryForm.value.type == TypeOfCategoryCycle.AdHoc;\r\n }\r\n\r\n if (this.category) {\r\n let category = Object.assign(this.category, this.categoryForm.value);\r\n category.budgetDate = new Date(\r\n Date.UTC(\r\n this.startMonthDate.year(),\r\n this.startMonthDate.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay,\r\n 0,\r\n 0,\r\n 0,\r\n 0\r\n )\r\n );\r\n\r\n const endMonthDate = this.helperService\r\n .getMonthStartDate()\r\n .add(1, 'months');\r\n if (category.budgetDate < endMonthDate) {\r\n category.budgetDate = null;\r\n }\r\n\r\n this.subs.add(\r\n this.categoryService.update(category).subscribe(\r\n data => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Category,\r\n object: { ...category },\r\n });\r\n this.update.emit({ ...category });\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n )\r\n );\r\n } else {\r\n let category: CategoryModel = this.categoryForm.value;\r\n this.subs.add(\r\n this.categoryService.save(category).subscribe(\r\n data => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.Category,\r\n object: data,\r\n });\r\n this.update.emit(data);\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n cancelHandler(event: any): void {\r\n event.preventDefault();\r\n this.cancel.emit(true);\r\n }\r\n}\r\n","import { Component, OnInit, Inject, Optional, OnDestroy } from '@angular/core';\r\nimport {\r\n UntypedFormGroup,\r\n UntypedFormBuilder,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n CategoryService,\r\n ProjectService,\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n AuthenticationService,\r\n HelperService,\r\n} from '@app/_services';\r\nimport {\r\n CategoryType,\r\n TypeOfCategoryCycle,\r\n ProjectModel,\r\n CategoryModel,\r\n ProjectType,\r\n} from '@app/_common/models';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport * as _ from 'lodash';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-category-edit',\r\n templateUrl: './category-edit.component.html',\r\n styleUrls: ['./category-edit.component.scss'],\r\n})\r\nexport class CategoryEditComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n public category: CategoryModel;\r\n public startMonthDate: Moment;\r\n\r\n categoryForm: UntypedFormGroup;\r\n\r\n categoryTypes: { id: number; value: string }[] = [\r\n {\r\n id: CategoryType.Expense,\r\n value: 'הוצאה',\r\n },\r\n {\r\n id: CategoryType.Income,\r\n value: 'הכנסה',\r\n },\r\n ];\r\n\r\n typeOfCategoryCycle: { id: number; value: string }[] = [\r\n {\r\n id: TypeOfCategoryCycle.Monthly,\r\n value: 'חודשי',\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Weekly,\r\n value: 'שבועי', // \"Weekly\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Business1,\r\n value: 'עסק 1', // \"Business1\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Business2,\r\n value: 'עסק 2', // \"Business2\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.OneTime,\r\n value: 'רק החודש', // \"OneTime\"\r\n },\r\n //{\r\n // \"id\": TypeOfCategoryCycle.AdHoc,\r\n // \"value\": \"AdHoc\"\r\n //}\r\n ];\r\n\r\n bussinesTypeOfCategoryCycle: { id: number; value: string }[] = [\r\n {\r\n id: TypeOfCategoryCycle.Monthly,\r\n value: 'חודשי',\r\n },\r\n {\r\n id: TypeOfCategoryCycle.Weekly,\r\n value: 'שבועי', // \"Weekly\"\r\n },\r\n {\r\n id: TypeOfCategoryCycle.OneTime,\r\n value: 'רק החודש', // \"OneTime\"\r\n },\r\n ];\r\n\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private authenticationService: AuthenticationService,\r\n private categoryService: CategoryService,\r\n private projectService: ProjectService,\r\n private eventService: EventService,\r\n private toastr: ToastrService,\r\n private helperService: HelperService,\r\n @Optional() public dialogRef: MatDialogRef,\r\n @Optional()\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: { category: CategoryModel; startMonthDate: Moment }\r\n ) {\r\n if (data) {\r\n this.category = data.category;\r\n this.startMonthDate = data.startMonthDate;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.initCategory();\r\n this.fetchProjects();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n initCategory() {\r\n if (this.category) {\r\n this.categoryForm = this.formBuilder.group({\r\n name: [this.category.name, Validators.required],\r\n budget: [this.category.budget, Validators.required],\r\n notes: [this.category.notes],\r\n categoryType: [this.category.categoryType, Validators.required],\r\n type: [this.category.type, Validators.required],\r\n projectId: [this.category.projectId, Validators.required],\r\n });\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === this.category.projectId\r\n );\r\n } else {\r\n this.categoryForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n budget: ['', Validators.required],\r\n notes: [''],\r\n categoryType: [this.categoryTypes[0].id, Validators.required],\r\n type: [this.typeOfCategoryCycle[0].id, Validators.required],\r\n projectId: ['', Validators.required],\r\n });\r\n\r\n if (this.projects.length > 0) {\r\n this.currentProject = this.projects[0];\r\n this.categoryForm.controls['projectId'].setValue(\r\n this.currentProject.id\r\n );\r\n }\r\n }\r\n }\r\n\r\n fetchProjects(): void {\r\n this.projectService\r\n .list(null)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n this.currentProject = this.projects.find(\r\n x => x.id === (this.category || { projectId: 0 }).projectId\r\n );\r\n if (!this.currentProject) {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n }\r\n\r\n this.categoryForm.controls['projectId'].setValue(\r\n this.currentProject.id\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n updateProject(event: any): void {\r\n this.currentProject = this.projects.find(x => x.id === event.value);\r\n if (\r\n this.currentProject.isBusiness &&\r\n this.bussinesTypeOfCategoryCycle.some(\r\n x => x.id === this.categoryForm.value.type\r\n ) === false\r\n ) {\r\n this.categoryForm.controls['type'].setValue(\r\n this.bussinesTypeOfCategoryCycle[0].id\r\n );\r\n }\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.categoryForm.value;\r\n oldValue.name = '';\r\n oldValue.budget = '';\r\n\r\n event.target.reset();\r\n this.categoryForm.reset(oldValue);\r\n }\r\n\r\n submit(event: any): void {\r\n if (this.categoryForm.invalid) {\r\n return;\r\n }\r\n\r\n if (this.currentProject.type === ProjectType.AdHoc) {\r\n this.categoryForm.value.type == TypeOfCategoryCycle.AdHoc;\r\n }\r\n\r\n if (this.category) {\r\n const category = Object.assign(this.category, this.categoryForm.value);\r\n\r\n category.budgetDate = new Date(\r\n Date.UTC(\r\n this.startMonthDate.year(),\r\n this.startMonthDate.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay,\r\n 0,\r\n 0,\r\n 0,\r\n 0\r\n )\r\n );\r\n\r\n const endMonthDate = this.helperService\r\n .getMonthStartDate()\r\n .add(1, 'months');\r\n if (category.budgetDate < endMonthDate) {\r\n category.budgetDate = null;\r\n }\r\n\r\n this.categoryService\r\n .update(category)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n () => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Category,\r\n object: { ...category },\r\n });\r\n this.dialogRef.close(true);\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n } else {\r\n const category: CategoryModel = this.categoryForm.value;\r\n this.categoryService\r\n .save(category)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.Category,\r\n object: data,\r\n });\r\n this.dialogRef.close(true);\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n }\r\n\r\n cancelHandler(event: any): void {\r\n event.preventDefault();\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-delete-dialog',\n templateUrl: './delete-dialog.component.html',\n styleUrls: ['./delete-dialog.component.scss'],\n})\nexport class DeleteDialogComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n Inject,\r\n Optional,\r\n ViewChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n ProjectModel,\r\n CategoryModel,\r\n ExpenseModel,\r\n CategoryType,\r\n ExpensesType,\r\n TypeOfPay,\r\n IncomeModel,\r\n ProjectType,\r\n} from '@app/_common/models';\r\nimport {\r\n ProjectService,\r\n ReportService,\r\n ExpenseService,\r\n IncomeService,\r\n EventService,\r\n ObjectType,\r\n EventType,\r\n SettingsService,\r\n StateService,\r\n} from '@app/_services';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport {\r\n MatDialogRef,\r\n MAT_DIALOG_DATA,\r\n MatDialog,\r\n} from '@angular/material/dialog';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment } from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport * as _ from 'lodash';\r\nimport { MY_FORMATS_DATE } from '@app/_common/dateFormats';\r\nimport { SuccessUpdatedComponent } from '../success-updated/success-updated.component';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-expense-widget',\r\n templateUrl: './expense-widget.component.html',\r\n styleUrls: ['./expense-widget.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_DATE },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class ExpenseWidgetComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n expenseForm: UntypedFormGroup;\r\n editTypeForm: UntypedFormGroup;\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n categories: CategoryModel[] = [];\r\n filteredCategories: CategoryModel[] = [];\r\n\r\n types: {\r\n id: string;\r\n value: string;\r\n enumValue: any;\r\n isEditable: boolean;\r\n order: number;\r\n }[] = [\r\n {\r\n id: 'CreditCard',\r\n value: 'כרטיס אשראי 1',\r\n enumValue: TypeOfPay.CreditCard,\r\n isEditable: true,\r\n order: 0,\r\n },\r\n {\r\n id: 'CreditCard2',\r\n value: 'כרטיס אשראי 2',\r\n enumValue: TypeOfPay.CreditCard2,\r\n isEditable: true,\r\n order: 1,\r\n },\r\n {\r\n id: 'CreditCard3',\r\n value: 'כרטיס אשראי 3',\r\n enumValue: TypeOfPay.CreditCard3,\r\n isEditable: true,\r\n order: 2,\r\n },\r\n {\r\n id: 'CreditCard4',\r\n value: 'כרטיס אשראי 4',\r\n enumValue: TypeOfPay.CreditCard4,\r\n isEditable: true,\r\n order: 3,\r\n },\r\n {\r\n id: 'Cash',\r\n value: 'מזומן',\r\n enumValue: TypeOfPay.Cash,\r\n isEditable: false,\r\n order: 4,\r\n },\r\n {\r\n id: 'Other1',\r\n value: 'אחר',\r\n enumValue: TypeOfPay.Other1,\r\n isEditable: true,\r\n order: 5,\r\n },\r\n {\r\n id: 'Other2',\r\n value: 'אחר 2',\r\n enumValue: TypeOfPay.Other2,\r\n isEditable: true,\r\n order: 6,\r\n },\r\n {\r\n id: 'Other3',\r\n value: 'אחר 3',\r\n enumValue: TypeOfPay.Other3,\r\n isEditable: true,\r\n order: 7,\r\n },\r\n {\r\n id: 'Other4',\r\n value: 'אחר 4',\r\n enumValue: TypeOfPay.Other4,\r\n isEditable: true,\r\n order: 8,\r\n },\r\n {\r\n id: 'Refundable',\r\n value: 'יתקבל החזר',\r\n enumValue: TypeOfPay.Refundable,\r\n isEditable: false,\r\n order: 100,\r\n },\r\n {\r\n id: 'BankTransfer',\r\n value: 'העברה',\r\n enumValue: TypeOfPay.BankTransfer,\r\n isEditable: false,\r\n order: 101,\r\n },\r\n {\r\n id: 'Check',\r\n value: 'שיק',\r\n enumValue: TypeOfPay.Check,\r\n isEditable: false,\r\n order: 102,\r\n },\r\n ];\r\n\r\n allTypes: {\r\n id: string;\r\n value: string;\r\n enumValue: any;\r\n isEditable: boolean;\r\n }[] = [];\r\n\r\n incomeTypes: { id: string; value: string }[] = [\r\n {\r\n id: 'Other',\r\n value: 'אחר',\r\n },\r\n {\r\n id: 'FixedIncome',\r\n value: 'הכנסה קבועה',\r\n },\r\n ];\r\n\r\n incomeViaTypes: { id: string; value: string }[] = [\r\n {\r\n id: 'Credit',\r\n value: 'סליקת אשראי',\r\n },\r\n {\r\n id: 'Check',\r\n value: 'שיק',\r\n },\r\n {\r\n id: 'BankTransfer',\r\n value: 'העברה בנקאית',\r\n },\r\n {\r\n id: 'Cash',\r\n value: 'מזומן',\r\n },\r\n ];\r\n\r\n countOfTimesArray: number[] = [...Array(36).keys()].map(x => x + 1);\r\n\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n loading: boolean = false;\r\n\r\n tab: string = 'expense';\r\n item: ExpenseModel | IncomeModel;\r\n\r\n @ViewChild('editTypeRef', { static: true }) editTypeRef: TemplateRef;\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private reportService: ReportService,\r\n private projectService: ProjectService,\r\n private expenseService: ExpenseService,\r\n private incomeService: IncomeService,\r\n private eventService: EventService,\r\n private settingsService: SettingsService,\r\n private stateService: StateService,\r\n private toastr: ToastrService,\r\n @Optional() public dialogRef: MatDialogRef,\r\n private dialog: MatDialog,\r\n @Optional()\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: {\r\n categoryType: CategoryType;\r\n item: ExpenseModel | IncomeModel;\r\n }\r\n ) {\r\n if (data) {\r\n if (data.categoryType === CategoryType.Expense) {\r\n this.tab = 'expense';\r\n } else {\r\n this.tab = 'income';\r\n }\r\n\r\n this.item = data.item;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.expenseForm = this.formBuilder.group({\r\n amount: [null, Validators.required],\r\n description: [''],\r\n spenderName: [''],\r\n date: [moment(), Validators.required],\r\n categoryId: ['', Validators.required],\r\n type: [this.types[0].id, Validators.required], // for expense only\r\n countOfTimes: [1, Validators.required],\r\n incomeVia: [this.incomeTypes[0].id, Validators.required], // for income only\r\n projectId: ['', Validators.required],\r\n });\r\n\r\n this.editTypeForm = this.formBuilder.group({\r\n type: [null, Validators.required],\r\n typeText: ['', Validators.required],\r\n });\r\n\r\n if (this.item) {\r\n this.expenseForm.reset(this.item);\r\n\r\n if (this.tab === 'expense') {\r\n const expense: ExpenseModel = this.item;\r\n this.expenseForm.controls['date'].setValue(\r\n moment.utc(expense.expenseDateTime).local()\r\n );\r\n\r\n if (expense.typeOfExpense === ExpensesType.Expense) {\r\n this.expenseForm.controls['type'].setValue(\r\n this.types.find(x => x.enumValue === expense.type).id\r\n );\r\n } else if (expense.typeOfExpense === ExpensesType.Payments) {\r\n this.expenseForm.controls['type'].setValue('Payments');\r\n } else if (expense.typeOfExpense === ExpensesType.DirectDebit) {\r\n this.expenseForm.controls['type'].setValue('DirectDebit');\r\n }\r\n } else {\r\n this.expenseForm.controls['date'].setValue(\r\n moment.utc((this.item).incomeDateTime).local()\r\n );\r\n }\r\n\r\n if (!this.expenseForm.value.incomeVia) {\r\n this.expenseForm.controls['incomeVia'].setValue(this.incomeTypes[0].id);\r\n }\r\n\r\n if (!this.expenseForm.value.countOfTimes) {\r\n this.expenseForm.controls['countOfTimes'].setValue(1);\r\n }\r\n }\r\n\r\n this.updateTypes();\r\n this.fetchProjects();\r\n this.initEvents();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n fetchProjects(): void {\r\n this.projectService\r\n .list(null)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n if (this.item) {\r\n this.currentProject = this.projects.find(\r\n x => x.id === this.item.projectId\r\n );\r\n } else {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n }\r\n }\r\n\r\n this.expenseForm.controls['projectId'].setValue(\r\n this.currentProject.id\r\n );\r\n\r\n this.fetchCategories();\r\n }\r\n });\r\n }\r\n\r\n fetchCategories(): void {\r\n this.reportService\r\n .get(true, null, null, null, this.currentProject.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.categories = data.map(x => x.category);\r\n\r\n if (this.tab === 'expense') {\r\n const expenseCategories: CategoryModel[] = _.sortBy(\r\n this.categories.filter(\r\n x => x.categoryType === CategoryType.Expense\r\n ),\r\n x => x.name.toLowerCase()\r\n );\r\n\r\n this.filteredCategories = expenseCategories.filter(\r\n x => x.projectId == this.currentProject.id\r\n );\r\n } else {\r\n this.updateIncomesCategories();\r\n }\r\n\r\n if (\r\n this.stateService.categoryId &&\r\n this.filteredCategories.some(\r\n x => x.id === this.stateService.categoryId\r\n )\r\n ) {\r\n this.expenseForm.controls['categoryId'].setValue(\r\n this.stateService.categoryId\r\n );\r\n }\r\n });\r\n }\r\n\r\n initEvents(): void {\r\n this.eventService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (event.objectType === ObjectType.Category) {\r\n if (event.type === EventType.Select) {\r\n setTimeout(\r\n () => {\r\n if (this.projects.some(x => x.id === event.object.projectId)) {\r\n if (this.currentProject.id === event.object.projectId) {\r\n const category: CategoryModel = this.categories.find(\r\n x => x.id === event.object.id\r\n );\r\n if (category.categoryType === CategoryType.Expense) {\r\n this.createExpense();\r\n } else {\r\n this.createIncome();\r\n }\r\n\r\n this.expenseForm.controls['categoryId'].setValue(\r\n event.object.id\r\n );\r\n } else {\r\n this.updateProject(\r\n { value: event.object.projectId },\r\n event.object.id\r\n );\r\n }\r\n }\r\n },\r\n this.projects.length === 0 ? 500 : 0\r\n );\r\n } else if (\r\n event.type === EventType.Create ||\r\n event.type === EventType.Update\r\n ) {\r\n const category: CategoryModel = event.object;\r\n if (category.projectId === this.currentProject.id) {\r\n let categoryId: number | null = null;\r\n if (this.expenseForm.value.categoryId === category.id) {\r\n categoryId = category.id;\r\n }\r\n\r\n this.updateProject({ value: category.projectId }, categoryId);\r\n }\r\n } else if (event.type === EventType.Delete) {\r\n const category: CategoryModel = event.object;\r\n if (category.projectId === this.currentProject.id) {\r\n this.categories = this.categories.filter(\r\n x => x.id != category.id\r\n );\r\n this.filteredCategories = this.filteredCategories.filter(\r\n x => x.id != category.id\r\n );\r\n if (this.expenseForm.value.categoryId === category.id) {\r\n this.expenseForm.controls['categoryId'].setValue('');\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (\r\n event.objectType === ObjectType.Project &&\r\n event.type === EventType.Select\r\n ) {\r\n if (this.projects.length > 0) {\r\n this.expenseForm.controls['projectId'].setValue(event.object);\r\n this.updateProject({ value: event.object });\r\n }\r\n }\r\n });\r\n }\r\n\r\n createExpense(): void {\r\n this.tab = 'expense';\r\n this.expenseForm.controls['spenderName'].setValue('');\r\n this.expenseForm.controls['countOfTimes'].setValue(1);\r\n this.updateExpenseCategories();\r\n }\r\n\r\n updateExpenseCategories(): void {\r\n const expenseCategories: CategoryModel[] = _.sortBy(\r\n this.categories.filter(x => x.categoryType === CategoryType.Expense),\r\n x => x.name.toLowerCase()\r\n );\r\n this.filteredCategories = expenseCategories.filter(\r\n x => x.projectId == this.currentProject.id\r\n );\r\n }\r\n\r\n createIncome(): void {\r\n this.tab = 'income';\r\n this.expenseForm.controls['spenderName'].setValue('default');\r\n this.expenseForm.controls['countOfTimes'].setValue(1);\r\n this.updateIncomesCategories();\r\n }\r\n\r\n updateIncomesCategories(): void {\r\n const incomeCategories: CategoryModel[] = _.sortBy(\r\n this.categories.filter(x => x.categoryType === CategoryType.Income),\r\n x => x.name.toLowerCase()\r\n );\r\n this.filteredCategories = incomeCategories.filter(\r\n x => x.projectId == this.currentProject.id\r\n );\r\n }\r\n\r\n updateProject(event: any, categoryId?: number): void {\r\n this.currentProject = this.projects.find(x => x.id === event.value);\r\n if (\r\n this.currentProject.type === ProjectType.AdHoc &&\r\n this.types.some(x => x.id === this.expenseForm.value.type) === false\r\n ) {\r\n this.expenseForm.controls['type'].setValue(this.types[0].id);\r\n }\r\n\r\n this.reportService\r\n .get(true, null, null, null, this.currentProject.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.categories = data.map(x => x.category);\r\n // update categories list\r\n if (this.tab === 'expense') {\r\n this.updateExpenseCategories();\r\n } else {\r\n this.updateIncomesCategories();\r\n }\r\n\r\n if (categoryId) {\r\n this.expenseForm.controls['categoryId'].setValue(categoryId);\r\n } else {\r\n this.expenseForm.controls['categoryId'].setValue('');\r\n }\r\n\r\n if (!this.currentProject.isBusiness) {\r\n this.expenseForm.controls['incomeVia'].setValue(\r\n this.incomeTypes[0].id\r\n );\r\n }\r\n });\r\n }\r\n\r\n onSubmitExpense(event: any): void {\r\n if (this.tab === 'income') {\r\n this.expenseForm.controls['spenderName'].setValue('default');\r\n }\r\n\r\n if (this.expenseForm.invalid || this.loading) {\r\n return;\r\n }\r\n\r\n // const service = this.tab === 'expense' ? this.expenseService : this.incomeService;\r\n if (this.tab === 'expense') {\r\n const model: ExpenseModel = this.expenseForm.value;\r\n model.expenseDateTime = this.expenseForm.value.date;\r\n\r\n if (this.expenseForm.value.type === 'Payments') {\r\n model.type = TypeOfPay.CreditCard;\r\n model.typeOfExpense = ExpensesType.Payments;\r\n model.totalAmount = model.amount;\r\n } else if (this.expenseForm.value.type === 'DirectDebit') {\r\n model.type = TypeOfPay.CreditCard;\r\n model.typeOfExpense = ExpensesType.DirectDebit;\r\n }\r\n\r\n if (model.typeOfExpense != ExpensesType.Payments) {\r\n this.expenseForm.value.countOfTimes = null;\r\n }\r\n\r\n this.loading = true;\r\n if (this.item) {\r\n const expense = Object.assign(this.item, model);\r\n this.expenseService\r\n .update(expense)\r\n .pipe(\r\n finalize(() => (this.loading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Expense,\r\n object: data,\r\n });\r\n //this.toastr.success('עודכן');\r\n this.showSuccessToast();\r\n this.dialogRef.close(true);\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n } else {\r\n this.expenseService\r\n .save(model)\r\n .pipe(\r\n finalize(() => (this.loading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.Expense,\r\n object: data,\r\n });\r\n //this.toastr.success('עודכן');\r\n this.showSuccessToast();\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n } else if (this.tab === 'income') {\r\n const model: IncomeModel = this.expenseForm.value;\r\n model.incomeDateTime = this.expenseForm.value.date;\r\n\r\n model.type = null;\r\n\r\n this.loading = true;\r\n if (this.item) {\r\n const income = Object.assign(this.item, model);\r\n this.incomeService\r\n .update(income)\r\n .pipe(\r\n finalize(() => (this.loading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(\r\n () => {\r\n //this.toastr.success('עודכן');\r\n this.showSuccessToast();\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n } else {\r\n this.incomeService\r\n .save(model)\r\n .pipe(\r\n finalize(() => (this.loading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.Income,\r\n object: data,\r\n });\r\n this.showSuccessToast();\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n cancel(event): void {\r\n event.preventDefault();\r\n this.dialogRef.close();\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.expenseForm.value;\r\n oldValue.amount = null;\r\n oldValue.description = '';\r\n oldValue.spenderName = '';\r\n oldValue.date = moment();\r\n oldValue.countOfTimes = 1;\r\n\r\n event.target.reset();\r\n this.expenseForm.reset(oldValue);\r\n\r\n if (!this.expenseForm.value.incomeVia) {\r\n this.expenseForm.controls['incomeVia'].setValue(this.incomeTypes[0].id);\r\n }\r\n\r\n if (!this.expenseForm.value.type) {\r\n this.expenseForm.controls['type'].setValue(this.types[0].id);\r\n }\r\n }\r\n\r\n updateTypes(): void {\r\n this.settingsService\r\n .get()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n data.forEach(value => {\r\n const type = this.types.find(x => x.enumValue == value.type);\r\n if (type) {\r\n type.value = value.name;\r\n }\r\n });\r\n });\r\n\r\n this.allTypes = _.orderBy(\r\n [\r\n ...this.types,\r\n {\r\n id: 'Payments',\r\n value: 'תשלומים',\r\n enumValue: ExpensesType.Payments,\r\n isEditable: false,\r\n order: 10,\r\n },\r\n {\r\n id: 'DirectDebit',\r\n value: 'חיוב קבוע',\r\n enumValue: ExpensesType.DirectDebit,\r\n isEditable: false,\r\n order: 11,\r\n },\r\n ],\r\n ['order']\r\n );\r\n }\r\n\r\n editTypeDialog: MatDialogRef;\r\n editType(\r\n event: any,\r\n type: { id: string; value: string; enumValue: any; isEditable: boolean }\r\n ): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.editTypeForm.controls['type'].setValue(type);\r\n this.editTypeForm.controls['typeText'].setValue(type.value);\r\n this.editTypeDialog = this.dialog.open(this.editTypeRef);\r\n }\r\n\r\n onSubmitType(): void {\r\n if (this.editTypeForm.invalid) {\r\n return;\r\n }\r\n\r\n const model = {\r\n type: this.editTypeForm.controls['type'].value.enumValue,\r\n name: this.editTypeForm.controls['typeText'].value,\r\n };\r\n\r\n this.settingsService\r\n .update(model)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n () => {\r\n this.updateTypes();\r\n this.toastr.success('עודכן');\r\n this.editTypeDialog.close();\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n\r\n closeTypeDialog(event: any): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (!this.editTypeDialog) {\r\n return;\r\n }\r\n\r\n this.editTypeDialog.close();\r\n }\r\n\r\n showSuccessToast(): void {\r\n this.dialogRef.close(true);\r\n this.dialog.open(SuccessUpdatedComponent, {\r\n panelClass: 'main-widget-panel',\r\n position: { top: '104px' },\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ExpenseWidgetComponent } from './expense-widget/expense-widget.component';\r\nimport { CategoryEditPanelComponent } from './category-edit-panel/category-edit-panel.component';\r\nimport { NumbersOnlyDirective } from '@app/_common/directives/numbersOnly';\r\nimport { CategoryEditComponent } from './category-edit/category-edit.component';\r\nimport { BalanceColorDirective } from '@app/_common/directives/balanceColor';\nimport { DeleteDialogComponent } from './delete-dialog/delete-dialog.component';\nimport { SuccessUpdatedComponent } from './success-updated/success-updated.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ExpenseWidgetComponent,\r\n CategoryEditPanelComponent,\r\n CategoryEditComponent,\r\n NumbersOnlyDirective,\r\n BalanceColorDirective,\r\n DeleteDialogComponent,\r\n SuccessUpdatedComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatProgressSpinnerModule,\r\n MatListModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatTabsModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n ],\r\n exports: [\r\n CommonModule,\r\n TranslateModule,\r\n ExpenseWidgetComponent,\r\n CategoryEditPanelComponent,\r\n CategoryEditComponent,\r\n NumbersOnlyDirective,\r\n BalanceColorDirective,\r\n ],\r\n})\r\nexport class SharedModule {}\r\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-success-updated',\n templateUrl: './success-updated.component.html',\n styleUrls: ['./success-updated.component.scss'],\n})\nexport class SuccessUpdatedComponent implements OnInit {\n constructor(public dialogRef: MatDialogRef) {}\n\n ngOnInit(): void {\n setTimeout(() => {\n this.dialogRef.close();\n }, 3000);\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { AuthGuard } from './_common/guards/auth.guard';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { MainLayoutComponent } from './_layouts/main-layout/main-layout.component';\r\nimport { CategoryComponent } from './category/category.component';\r\nimport { ExpensesComponent } from './expenses/expenses.component';\r\nimport { DeviceGuard } from './_common/guards/device.guard';\r\nimport { TermOfUseComponent } from './term-of-use/term-of-use.component';\r\nimport { StatsComponent } from './stats/stats.component';\r\nimport { BankAccountComponent } from './bank-account/bank-account.component';\r\nimport { YearsReportsComponent } from './years-reports/years-reports.component';\r\nimport { SavingsModule } from './savings/savings.module';\r\nimport { LoansModule } from './loans/loans.module';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: 'home',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: '',\r\n component: MainLayoutComponent,\r\n canActivateChild: [AuthGuard, DeviceGuard],\r\n children: [\r\n {\r\n path: 'home',\r\n component: HomeComponent\r\n },\r\n {\r\n path: 'category/:projectId/:id',\r\n component: CategoryComponent\r\n },\r\n {\r\n path: 'expenses',\r\n component: ExpensesComponent\r\n },\r\n {\r\n path: 'stats',\r\n component: StatsComponent\r\n },\r\n {\r\n path: 'bankAccount',\r\n component: BankAccountComponent\r\n },\r\n {\r\n path: 'yearsReport',\r\n component: YearsReportsComponent\r\n },\r\n {\r\n path: 'savings',\r\n loadChildren: () => SavingsModule\r\n },\r\n {\r\n path: 'loans',\r\n loadChildren: () => LoansModule\r\n }\r\n ]\r\n },\r\n { path: 'login', component: LoginComponent, canActivate: [DeviceGuard], canActivateChild: [DeviceGuard] },\r\n { path: 'term', component: TermOfUseComponent },\r\n // otherwise redirect to home\r\n { path: '**', redirectTo: 'home' }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BnNgIdleService } from 'bn-ng-idle';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthenticationService } from './_services';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n private subs: Subscription = new Subscription();\r\n\r\n constructor(\r\n private router: Router,\r\n private translate: TranslateService,\r\n public dialog: MatDialog,\r\n private bnIdle: BnNgIdleService,\r\n private authenticationService: AuthenticationService\r\n ) {\r\n translate.setDefaultLang('he');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subs.add(\r\n this.bnIdle.startWatching(1800).subscribe((isTimedOut: boolean) => {\r\n if (isTimedOut) {\r\n if (this.authenticationService.currentUserValue) {\r\n console.log('session expired');\r\n this.dialog.closeAll();\r\n this.authenticationService.logout();\r\n this.router.navigate(['/login']);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n HttpClientModule,\r\n HttpClient,\r\n HTTP_INTERCEPTORS,\r\n} from '@angular/common/http';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIcon, MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { BasicAuthInterceptor, ErrorInterceptor } from './_helpers';\r\nimport { MainLayoutModule } from './_layouts/main-layout/main-layout.module';\r\n\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { SharedModule } from './_shared/shared.module';\r\n\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { CategoryComponent } from './category/category.component';\r\nimport { TypeOfCategoryCyclePipe } from './_common/pipes/typeOfCategoryCycle.pipe';\r\nimport { ExpensesComponent } from './expenses/expenses.component';\r\nimport { LazyTranslateLoader } from './_helpers/lazyTranslateLoader';\r\nimport { TermOfUseComponent } from './term-of-use/term-of-use.component';\r\n\r\nimport { BnNgIdleService } from 'bn-ng-idle';\r\nimport { StatsComponent } from './stats/stats.component';\r\nimport { BankAccountComponent } from './bank-account/bank-account.component';\r\nimport { YearsReportsComponent } from './years-reports/years-reports.component';\r\nimport {\r\n PerfectScrollbarConfigInterface,\r\n PerfectScrollbarModule,\r\n PERFECT_SCROLLBAR_CONFIG,\r\n} from 'ngx-perfect-scrollbar';\nimport { SettingsComponent } from './settings/settings.component';\r\n\r\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\r\n suppressScrollX: true,\r\n};\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n HomeComponent,\r\n CategoryComponent,\r\n TypeOfCategoryCyclePipe,\r\n ExpensesComponent,\r\n TermOfUseComponent,\r\n StatsComponent,\r\n BankAccountComponent,\r\n YearsReportsComponent,\r\n SettingsComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n AppRoutingModule,\r\n BrowserAnimationsModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatProgressSpinnerModule,\r\n MatListModule,\r\n MatDatepickerModule,\r\n MatProgressSpinnerModule,\r\n MatDialogModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n MatCheckboxModule,\r\n MatTableModule,\r\n MatIconModule,\r\n MainLayoutModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useClass: LazyTranslateLoader,\r\n deps: [HttpClient],\r\n },\r\n }),\r\n ToastrModule.forRoot({\r\n timeOut: 7000,\r\n positionClass: 'toast-bottom-right',\r\n preventDuplicates: true,\r\n }),\r\n SharedModule,\r\n PerfectScrollbarModule,\r\n ],\r\n providers: [\r\n BnNgIdleService,\r\n { provide: HTTP_INTERCEPTORS, useClass: BasicAuthInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n {\r\n provide: PERFECT_SCROLLBAR_CONFIG,\r\n useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG,\r\n },\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport {\r\n UntypedFormGroup,\r\n UntypedFormBuilder,\r\n Validators,\r\n UntypedFormControl,\r\n} from '@angular/forms';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n AuthenticationService,\r\n HelperService,\r\n BankAccountService,\r\n ProjectService,\r\n} from '@app/_services';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n BankAccountModel,\r\n ProjectModel,\r\n ProjectType,\r\n} from '@app/_common/models';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-bank-account',\r\n templateUrl: './bank-account.component.html',\r\n styleUrls: ['./bank-account.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class BankAccountComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n bankAccountForm: UntypedFormGroup;\r\n date: UntypedFormControl;\r\n\r\n selectedMonth: string = '';\r\n public startMonthDate: string;\r\n public endMonthDate: string;\r\n\r\n public projectControl = new UntypedFormControl();\r\n projects: ProjectModel[] = [];\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n public isLoading: boolean = false;\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private authenticationService: AuthenticationService,\r\n private helperService: HelperService,\r\n private projectService: ProjectService,\r\n private bankAccountService: BankAccountService,\r\n private toastr: ToastrService\r\n ) {\r\n this.date = new UntypedFormControl(this.helperService.getMonthStartDate());\r\n }\r\n\r\n ngOnInit() {\r\n this.bankAccountForm = this.formBuilder.group({\r\n startStatus: ['', Validators.required],\r\n endStatus: ['', Validators.required],\r\n });\r\n\r\n this.fetchProjects();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n fetchProjects(): void {\r\n this.isLoading = true;\r\n this.projectService\r\n .list(null)\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n const currentProject: ProjectModel = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (currentProject) {\r\n this.projectControl.setValue(currentProject.id);\r\n } else {\r\n this.projectControl.setValue(this.projects[0]);\r\n localStorage.setItem(\r\n 'currentProject',\r\n this.projects[0].id.toString()\r\n );\r\n }\r\n\r\n this.updateDateRange();\r\n }\r\n });\r\n }\r\n\r\n updateProject(event: any): void {\r\n this.projectControl.setValue(event.value);\r\n localStorage.setItem('currentProject', event.value.toString());\r\n this.loadBankStatus();\r\n }\r\n\r\n updateDateRange(): void {\r\n const monthDate: Moment = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n this.selectedMonth = monthDate.format('MMM YY');\r\n this.startMonthDate = monthDate.format('DD.MM.YYYY');\r\n this.endMonthDate = monthDate\r\n .add(1, 'months')\r\n .add(-1, 'days')\r\n .format('DD.MM.YYYY');\r\n\r\n this.loadBankStatus();\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue: Moment = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n this.updateDateRange();\r\n }\r\n\r\n loadBankStatus(): void {\r\n this.isLoading = true;\r\n this.bankAccountService\r\n .get(\r\n this.projectControl.value,\r\n +this.date.value.format('Y'),\r\n +this.date.value.format('M')\r\n )\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(\r\n data => {\r\n this.bankAccountForm.reset(data);\r\n\r\n Object.keys(this.bankAccountForm.controls).forEach(key => {\r\n this.bankAccountForm.get(key).setErrors(null);\r\n });\r\n },\r\n err => {\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n\r\n submit(): void {\r\n if (this.bankAccountForm.invalid) {\r\n return;\r\n }\r\n\r\n const model: BankAccountModel = this.bankAccountForm.value;\r\n model.projectId = this.projectControl.value;\r\n model.year = +this.date.value.format('Y');\r\n model.month = +this.date.value.format('M');\r\n\r\n this.isLoading = true;\r\n this.bankAccountService\r\n .update(model)\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(\r\n data => {\r\n this.toastr.success('הנתונים נשמרו');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n CategoryType,\r\n CategoryReportModel,\r\n ExpenseModel,\r\n IncomeModel,\r\n} from '@app/_common/models';\r\nimport {\r\n AuthenticationService,\r\n ExpenseService,\r\n ReportService,\r\n HelperService,\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n IncomeService,\r\n CategoryService,\r\n DataService,\r\n StateService,\r\n} from '@app/_services';\r\nimport * as _ from 'lodash';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport { ExpenseWidgetComponent } from '@app/_shared/expense-widget/expense-widget.component';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n finalize,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CategoryEditComponent } from '@app/_shared/category-edit/category-edit.component';\r\nimport { DeleteDialogComponent } from '@app/_shared/delete-dialog/delete-dialog.component';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-category',\r\n templateUrl: './category.component.html',\r\n styleUrls: ['./category.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class CategoryComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n private id: number;\r\n public categoryReport: CategoryReportModel = new CategoryReportModel();\r\n\r\n currentPeriodBudget: number = 0;\r\n expensesSum: number = 0;\r\n\r\n public date: UntypedFormControl;\r\n public selectedMonth: string = '';\r\n\r\n public groups: any[] = [];\r\n private expenses = [];\r\n\r\n public startMonthDate: string;\r\n public endMonthDate: string;\r\n\r\n public isLoading: boolean = false;\r\n public isLoadingExpenses: boolean = false;\r\n\r\n searchCtrl = new UntypedFormControl(null);\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private categoryService: CategoryService,\r\n private expenseService: ExpenseService,\r\n private incomeService: IncomeService,\r\n private reportService: ReportService,\r\n private dataService: DataService,\r\n private eventService: EventService,\r\n private stateService: StateService,\r\n private helperService: HelperService,\r\n public dialog: MatDialog\r\n ) {\r\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(params => {\r\n this.id = +params['id'];\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setStartDate();\r\n this.updateDateRange();\r\n\r\n this.dataService.data.subscribe(data => {\r\n if (data.date) {\r\n this.date.setValue(data.date);\r\n }\r\n\r\n this.updateDateRange();\r\n });\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (\r\n event.objectType === ObjectType.Expense &&\r\n event.type === EventType.Create\r\n ) {\r\n const expense: ExpenseModel = event.object;\r\n if (expense.categoryId === this.id) {\r\n this.loadCategory();\r\n }\r\n } else if (\r\n event.objectType === ObjectType.Income &&\r\n event.type === EventType.Create\r\n ) {\r\n const expense: IncomeModel = event.object;\r\n if (expense.categoryId === this.id) {\r\n this.loadCategory();\r\n }\r\n }\r\n });\r\n\r\n this.searchCtrl.valueChanges\r\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.expenses = [];\r\n if (\r\n this.categoryReport.category.categoryType === CategoryType.Expense\r\n ) {\r\n this.loadExpenses(this.date.value);\r\n } else {\r\n this.loadIncomes(this.date.value);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateService.setValues(null, null);\r\n\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setStartDate(): void {\r\n const selectedDate: string = localStorage.getItem('selectedDate');\r\n\r\n let monthDate: Moment;\r\n if (selectedDate) {\r\n const obj = JSON.parse(selectedDate);\r\n if (moment.utc() < moment(obj.expired)) {\r\n monthDate = moment(obj.date, null, 'he');\r\n }\r\n }\r\n\r\n if (!monthDate || !monthDate.isValid()) {\r\n const date: Moment = this.helperService.getMonthStartDate();\r\n monthDate = moment(\r\n new Date(\r\n date.year(),\r\n date.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n }\r\n this.date = new UntypedFormControl(monthDate);\r\n }\r\n\r\n updateDateRange(): void {\r\n const monthDate: Moment = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n this.selectedMonth = monthDate.format('MMM YY');\r\n this.startMonthDate = monthDate.format('DD.MM.YYYY');\r\n this.endMonthDate = monthDate\r\n .add(1, 'months')\r\n .add(-1, 'days')\r\n .format('DD.MM.YYYY');\r\n\r\n this.loadCategory();\r\n }\r\n\r\n loadCategory(): void {\r\n const date = this.date.value;\r\n this.groups = [];\r\n this.expenses = [];\r\n this.isLoading = true;\r\n\r\n this.reportService\r\n .getCategory(this.id, null, date.year(), date.month() + 1)\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.categoryReport = data;\r\n this.currentPeriodBudget = data.currentPeriodBudget;\r\n this.expensesSum = data.expensesSum;\r\n\r\n if (\r\n this.categoryReport.category.categoryType === CategoryType.Expense\r\n ) {\r\n this.loadExpenses(date);\r\n } else {\r\n this.loadIncomes(date);\r\n }\r\n\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Category,\r\n object: {\r\n projectId: this.categoryReport.category.projectId,\r\n id: this.id,\r\n },\r\n });\r\n\r\n this.stateService.setValues(\r\n this.categoryReport.category.projectId,\r\n this.id\r\n );\r\n });\r\n }\r\n\r\n loadExpenses(date: any, offset: number = 0, size: number = 50): void {\r\n this.isLoadingExpenses = true;\r\n\r\n this.expenseService\r\n .list(\r\n 50,\r\n offset,\r\n this.id,\r\n null,\r\n date.year(),\r\n date.month() + 1,\r\n null,\r\n null,\r\n null,\r\n this.searchCtrl.value\r\n )\r\n .pipe(\r\n finalize(() => (this.isLoadingExpenses = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.expenses = _.uniqBy(this.expenses.concat(data), 'id');\r\n\r\n const groups = _.groupBy(this.expenses, x => {\r\n const date = moment.utc(x.expenseDateTime, null, 'he').local();\r\n return date.format('dddd, D MMMM YYYY');\r\n });\r\n\r\n const result = [];\r\n _.forEach(groups, function (value, key) {\r\n result.push({\r\n date: key,\r\n expenses: _.sortBy(value, x => moment.utc(x.expenseDateTime)),\r\n });\r\n });\r\n\r\n this.groups = result;\r\n\r\n if (data.length === size) {\r\n // load next expenses\r\n this.loadExpenses(date, offset + size);\r\n }\r\n });\r\n }\r\n\r\n loadIncomes(date: any, offset: number = 0, size: number = 50): void {\r\n this.isLoadingExpenses = true;\r\n\r\n this.incomeService\r\n .list(\r\n 50,\r\n offset,\r\n this.id,\r\n null,\r\n date.year(),\r\n date.month() + 1,\r\n this.searchCtrl.value\r\n )\r\n .pipe(\r\n finalize(() => (this.isLoadingExpenses = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.expenses = _.uniqBy(this.expenses.concat(data), 'id');\r\n\r\n const groups = _.groupBy(this.expenses, x => {\r\n const date = moment.utc(x.incomeDateTime, null, 'he').local();\r\n return date.format('dddd, D MMMM YYYY');\r\n });\r\n\r\n const result = [];\r\n _.forEach(groups, function (value, key) {\r\n result.push({ date: key, expenses: value });\r\n });\r\n\r\n this.groups = result;\r\n\r\n if (data.length === size) {\r\n // load next incomes\r\n this.loadIncomes(date, offset + size);\r\n }\r\n });\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n localStorage.setItem(\r\n 'selectedDate',\r\n JSON.stringify({\r\n date: this.date.value,\r\n expired: moment.utc().add(1, 'day'),\r\n })\r\n );\r\n this.updateDateRange();\r\n }\r\n\r\n editItem(item: ExpenseModel | IncomeModel): void {\r\n item.projectId = this.categoryReport.category.projectId;\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(ExpenseWidgetComponent, {\r\n data: {\r\n categoryType: this.categoryReport.category.categoryType,\r\n item: { ...item },\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.loadCategory();\r\n }\r\n });\r\n }\r\n\r\n deleteItem(item: ExpenseModel | IncomeModel): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n const date = this.date.value;\r\n\r\n if (\r\n this.categoryReport.category.categoryType === CategoryType.Expense\r\n ) {\r\n this.expenseService\r\n .delete(item.id, date.year(), date.month() + 1)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.loadCategory();\r\n });\r\n } else {\r\n this.incomeService\r\n .delete(item.id, date.year(), date.month() + 1)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.loadCategory();\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n edit(): void {\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(CategoryEditComponent, {\r\n data: {\r\n category: this.categoryReport.category,\r\n startMonthDate: this.date.value,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.updateDateRange();\r\n }\r\n });\r\n }\r\n\r\n delete(): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n this.categoryService\r\n .delete(this.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.Category,\r\n object: { ...this.categoryReport.category },\r\n });\r\n this.router.navigate(['/home']);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n ProjectModel,\r\n ProjectType,\r\n CategoryType,\r\n TypeOfPay,\r\n ExpensesType,\r\n} from '@app/_common/models';\r\nimport {\r\n AuthenticationService,\r\n ExpenseService,\r\n ProjectService,\r\n ReportService,\r\n HelperService,\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n SettingsService,\r\n} from '@app/_services';\r\nimport * as _ from 'lodash';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport { ExpenseWidgetComponent } from '@app/_shared/expense-widget/expense-widget.component';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n finalize,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { DeleteDialogComponent } from '@app/_shared/delete-dialog/delete-dialog.component';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-expenses',\r\n templateUrl: './expenses.component.html',\r\n styleUrls: ['./expenses.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class ExpensesComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n currentPeriodBudget: number = 0;\r\n expensesSum: number = 0;\r\n\r\n public date: UntypedFormControl;\r\n public selectedMonth: string = '';\r\n\r\n public groups: any = [];\r\n private expenses = [];\r\n\r\n types: {\r\n id: string;\r\n value: string;\r\n enumValue: any;\r\n isEditable: boolean;\r\n order: number;\r\n }[] = [\r\n {\r\n id: 'CreditCard',\r\n value: 'כרטיס אשראי 1',\r\n enumValue: TypeOfPay.CreditCard,\r\n isEditable: true,\r\n order: 0,\r\n },\r\n {\r\n id: 'CreditCard2',\r\n value: 'כרטיס אשראי 2',\r\n enumValue: TypeOfPay.CreditCard2,\r\n isEditable: true,\r\n order: 1,\r\n },\r\n {\r\n id: 'CreditCard3',\r\n value: 'כרטיס אשראי 3',\r\n enumValue: TypeOfPay.CreditCard3,\r\n isEditable: true,\r\n order: 2,\r\n },\r\n {\r\n id: 'CreditCard4',\r\n value: 'כרטיס אשראי 4',\r\n enumValue: TypeOfPay.CreditCard4,\r\n isEditable: true,\r\n order: 3,\r\n },\r\n {\r\n id: 'Cash',\r\n value: 'מזומן',\r\n enumValue: TypeOfPay.Cash,\r\n isEditable: false,\r\n order: 4,\r\n },\r\n {\r\n id: 'Other1',\r\n value: 'אחר',\r\n enumValue: TypeOfPay.Other1,\r\n isEditable: true,\r\n order: 5,\r\n },\r\n {\r\n id: 'Other2',\r\n value: 'אחר 2',\r\n enumValue: TypeOfPay.Other2,\r\n isEditable: true,\r\n order: 6,\r\n },\r\n {\r\n id: 'Other3',\r\n value: 'אחר 3',\r\n enumValue: TypeOfPay.Other3,\r\n isEditable: true,\r\n order: 7,\r\n },\r\n {\r\n id: 'Other4',\r\n value: 'אחר 4',\r\n enumValue: TypeOfPay.Other4,\r\n isEditable: true,\r\n order: 8,\r\n },\r\n {\r\n id: 'Refundable',\r\n value: 'יתקבל החזר',\r\n enumValue: TypeOfPay.Refundable,\r\n isEditable: false,\r\n order: 100,\r\n },\r\n {\r\n id: 'BankTransfer',\r\n value: 'העברה',\r\n enumValue: TypeOfPay.BankTransfer,\r\n isEditable: false,\r\n order: 101,\r\n },\r\n {\r\n id: 'Check',\r\n value: 'שיק',\r\n enumValue: TypeOfPay.Check,\r\n isEditable: false,\r\n order: 102,\r\n },\r\n ];\r\n\r\n allTypes: {\r\n id: string;\r\n value: string;\r\n enumValue: any;\r\n isEditable: boolean;\r\n }[] = [];\r\n selectedTypeOfExpense: any = null;\r\n\r\n public startMonthDate: string;\r\n public endMonthDate: string;\r\n\r\n public isLoading: boolean = false;\r\n public isLoadingExpenses: boolean = false;\r\n\r\n searchCtrl = new UntypedFormControl(null);\r\n\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n private projectService: ProjectService,\r\n private expenseService: ExpenseService,\r\n private reportService: ReportService,\r\n private eventService: EventService,\r\n private helperService: HelperService,\r\n private settingsService: SettingsService,\r\n public dialog: MatDialog\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.setStartDate();\r\n this.updateDateRange();\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (\r\n event.objectType === ObjectType.Expense &&\r\n event.type === EventType.Create\r\n ) {\r\n this.fetchProject();\r\n } else if (\r\n event.objectType === ObjectType.Income &&\r\n event.type === EventType.Create\r\n ) {\r\n this.fetchProject();\r\n }\r\n });\r\n\r\n this.fetchProjects();\r\n\r\n this.searchCtrl.valueChanges\r\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.expenses = [];\r\n this.loadExpenses(this.date.value);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setStartDate(): void {\r\n const selectedDate = localStorage.getItem('selectedDate');\r\n\r\n let monthDate;\r\n if (selectedDate) {\r\n const obj = JSON.parse(selectedDate);\r\n if (moment.utc() < moment(obj.expired)) {\r\n monthDate = moment(obj.date, null, 'he');\r\n }\r\n }\r\n\r\n if (!monthDate || !monthDate.isValid()) {\r\n const date = this.helperService.getMonthStartDate();\r\n monthDate = moment(\r\n new Date(\r\n date.year(),\r\n date.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n }\r\n this.date = new UntypedFormControl(monthDate);\r\n }\r\n\r\n updateDateRange(): void {\r\n const monthDate = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n this.selectedMonth = monthDate.format('MMM YY');\r\n this.startMonthDate = monthDate.format('DD.MM.YYYY');\r\n this.endMonthDate = monthDate\r\n .add(1, 'months')\r\n .add(-1, 'days')\r\n .format('DD.MM.YYYY');\r\n\r\n this.fetchProject();\r\n }\r\n\r\n loadExpenses(date: any, offset: number = 0, size: number = 50): void {\r\n this.isLoadingExpenses = true;\r\n\r\n let type = this.selectedTypeOfExpense;\r\n let typeOfExpense = null;\r\n\r\n if (type === 'Payments') {\r\n type = TypeOfPay.CreditCard;\r\n typeOfExpense = ExpensesType.Payments;\r\n } else if (type === 'DirectDebit') {\r\n type = TypeOfPay.CreditCard;\r\n typeOfExpense = ExpensesType.DirectDebit;\r\n }\r\n\r\n this.expenseService\r\n .list(\r\n 50,\r\n offset,\r\n null,\r\n null,\r\n date.year(),\r\n date.month() + 1,\r\n this.currentProject.id,\r\n type,\r\n typeOfExpense,\r\n this.searchCtrl.value\r\n )\r\n .pipe(\r\n finalize(() => (this.isLoadingExpenses = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.expenses = _.uniqBy(this.expenses.concat(data), 'id');\r\n\r\n const groups = _.groupBy(this.expenses, x => {\r\n const date = moment.utc(x.expenseDateTime, null, 'he').local();\r\n return date.format('dddd, D MMMM YYYY');\r\n });\r\n\r\n const result = [];\r\n _.forEach(groups, function (value, key) {\r\n result.push({\r\n date: key,\r\n expenses: _.sortBy(value, x => moment.utc(x.expenseDateTime)),\r\n });\r\n });\r\n\r\n this.groups = result;\r\n\r\n if (data.length === size) {\r\n // load next expenses\r\n this.loadExpenses(date, offset + size);\r\n }\r\n });\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n localStorage.setItem(\r\n 'selectedDate',\r\n JSON.stringify({\r\n date: this.date.value,\r\n expired: moment.utc().add(1, 'day'),\r\n })\r\n );\r\n this.updateDateRange();\r\n }\r\n\r\n fetchProjects(): void {\r\n this.projectService\r\n .list(null)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n localStorage.setItem(\r\n 'currentProject',\r\n this.currentProject.id.toString()\r\n );\r\n }\r\n\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Project,\r\n object: this.currentProject.id,\r\n });\r\n }\r\n\r\n this.fetchProject();\r\n this.updateTypes();\r\n });\r\n }\r\n\r\n fetchProject(isLoadStats: boolean = true): void {\r\n if (this.currentProject == null) {\r\n return;\r\n }\r\n\r\n const date = this.date.value;\r\n this.groups = [];\r\n this.expenses = [];\r\n\r\n if (isLoadStats) {\r\n this.isLoading = true;\r\n this.reportService\r\n .get(false, null, date.year(), date.month() + 1, this.currentProject.id)\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.expensesSum = _.sumBy(data, 'expensesSum');\r\n this.currentPeriodBudget = _.sumBy(data, 'currentPeriodBudget');\r\n });\r\n }\r\n\r\n this.loadExpenses(date);\r\n }\r\n\r\n changeProject(project: ProjectModel): void {\r\n this.currentProject = project;\r\n this.fetchProject();\r\n localStorage.setItem('currentProject', this.currentProject.id.toString());\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Project,\r\n object: this.currentProject.id,\r\n });\r\n }\r\n\r\n editItem(item: any): void {\r\n item.projectId = this.currentProject.id;\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(ExpenseWidgetComponent, {\r\n data: {\r\n categoryType: CategoryType.Expense,\r\n item: { ...item },\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.fetchProject();\r\n }\r\n });\r\n }\r\n\r\n deleteItem(item: any): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n const date = this.date.value;\r\n this.expenseService\r\n .delete(item.id, date.year(), date.month() + 1)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.fetchProject();\r\n });\r\n }\r\n });\r\n }\r\n\r\n updateTypes(): void {\r\n this.settingsService\r\n .get()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n data.forEach(value => {\r\n const type = this.types.find(x => x.enumValue == value.type);\r\n if (type) {\r\n type.value = value.name;\r\n }\r\n });\r\n });\r\n\r\n this.allTypes = _.orderBy(\r\n [\r\n ...this.types,\r\n {\r\n id: 'Payments',\r\n value: 'תשלומים',\r\n enumValue: ExpensesType.Payments,\r\n isEditable: false,\r\n order: 10,\r\n },\r\n {\r\n id: 'DirectDebit',\r\n value: 'חיוב קבוע',\r\n enumValue: ExpensesType.DirectDebit,\r\n isEditable: false,\r\n order: 11,\r\n },\r\n ],\r\n ['order']\r\n );\r\n }\r\n\r\n onClearType(event: any): void {\r\n event.stopPropagation();\r\n this.selectedTypeOfExpense = null;\r\n this.fetchProject(false);\r\n }\r\n\r\n download(): void {\r\n const date = this.date.value;\r\n\r\n let type = this.selectedTypeOfExpense;\r\n let typeOfExpense = null;\r\n\r\n if (type === 'Payments') {\r\n type = TypeOfPay.CreditCard;\r\n typeOfExpense = ExpensesType.Payments;\r\n } else if (type === 'DirectDebit') {\r\n type = TypeOfPay.CreditCard;\r\n typeOfExpense = ExpensesType.DirectDebit;\r\n }\r\n this.expenseService\r\n .export(\r\n null,\r\n null,\r\n date.year(),\r\n date.month() + 1,\r\n this.currentProject.id,\r\n type,\r\n typeOfExpense\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n window.open(data.url, '_blank');\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport {\r\n CategoryType,\r\n ProjectModel,\r\n ProjectType,\r\n CategoryModel,\r\n} from '../_common/models';\r\nimport {\r\n AuthenticationService,\r\n ReportService,\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n ProjectService,\r\n HelperService,\r\n DataService,\r\n SavingService,\r\n LoanService,\r\n} from '../_services';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport 'chartjs-plugin-style';\r\nimport * as _ from 'lodash';\r\nimport { CategoryEditComponent } from '@app/_shared/category-edit/category-edit.component';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { SavingModel } from '@app/_common/models/saving';\r\nimport { SavingWidgetComponent } from '@app/savings/saving-widget/saving-widget.component';\r\nimport { LoanModel } from '@app/_common/models/loan';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class HomeComponent implements OnInit, OnDestroy {\r\n public incomesTable = { rows: [] };\r\n public incomesTotal = { planning: 0, incomesSum: 0 };\r\n public expensesTable = { rows: [] };\r\n public expensesTotal = { planning: 0, expensesSum: 0 };\r\n public totalTable = { rows: [] };\r\n\r\n public mainTotalTable = { rows: [] };\r\n\r\n public startMonthDate: string;\r\n public endMonthDate: string;\r\n public date: UntypedFormControl;\r\n\r\n public projectControl = new UntypedFormControl();\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n private userId = null; //current user\r\n\r\n public isLoading: boolean = false;\r\n\r\n private subs: Subscription = new Subscription();\r\n\r\n constructor(\r\n private authenticationService: AuthenticationService,\r\n private reportService: ReportService,\r\n private projectService: ProjectService,\r\n private eventService: EventService,\r\n private savingService: SavingService,\r\n private loanService: LoanService,\r\n private helperService: HelperService,\r\n private dataService: DataService,\r\n public dialog: MatDialog\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.setStartDate();\r\n this.fetchProjects();\r\n this.loadSavings();\r\n this.loadLoans();\r\n\r\n this.subs.add(\r\n this.dataService.data.subscribe(data => {\r\n if (data.date) {\r\n this.date.setValue(data.date);\r\n }\r\n\r\n this.updateDateRange(false);\r\n })\r\n );\r\n\r\n this.subs.add(\r\n this.eventService.getUpdate().subscribe(() => {\r\n this.load();\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setStartDate(): void {\r\n const selectedDate: string = localStorage.getItem('selectedDate');\r\n\r\n let monthDate: Moment;\r\n if (selectedDate) {\r\n const obj: any = JSON.parse(selectedDate);\r\n if (moment.utc() < moment(obj.expired)) {\r\n monthDate = moment(obj.date, null, 'he');\r\n }\r\n }\r\n\r\n if (!monthDate || !monthDate.isValid()) {\r\n const date: Moment = this.helperService.getMonthStartDate();\r\n monthDate = moment(\r\n new Date(\r\n date.year(),\r\n date.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n }\r\n\r\n this.date = new UntypedFormControl(monthDate);\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue: Moment = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n localStorage.setItem(\r\n 'selectedDate',\r\n JSON.stringify({\r\n date: this.date.value,\r\n expired: moment.utc().add(1, 'day'),\r\n })\r\n );\r\n this.updateDateRange();\r\n }\r\n\r\n updateDateRange(updateData: boolean = true): void {\r\n if (updateData) {\r\n this.dataService.updatedDataSelection({ date: this.date.value });\r\n }\r\n\r\n const monthDate: Moment = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n )\r\n );\r\n this.startMonthDate = monthDate.format('DD.MM.YYYY');\r\n this.endMonthDate = monthDate\r\n .add(1, 'months')\r\n .add(-1, 'days')\r\n .format('DD.MM.YYYY');\r\n\r\n this.load();\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Date,\r\n object: this.date.value,\r\n });\r\n }\r\n\r\n fetchProjects(): void {\r\n this.subs.add(\r\n this.projectService.list(null).subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n localStorage.setItem(\r\n 'currentProject',\r\n this.currentProject.id.toString()\r\n );\r\n }\r\n\r\n this.projectControl.setValue(this.currentProject.id);\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Project,\r\n object: this.currentProject.id,\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n updateProject(event: any): void {\r\n this.currentProject = this.projects.find(x => x.id === event.value);\r\n localStorage.setItem('currentProject', this.currentProject.id.toString());\r\n this.load();\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Project,\r\n object: this.currentProject.id,\r\n });\r\n }\r\n\r\n load(): void {\r\n this.loadTables();\r\n }\r\n\r\n loadTables(): void {\r\n this.isLoading = true;\r\n const date: Moment = this.date.value;\r\n this.subs.add(\r\n this.reportService\r\n .get(\r\n true,\r\n this.userId,\r\n date.year(),\r\n date.month() + 1,\r\n (this.currentProject || { id: null }).id\r\n )\r\n .subscribe(\r\n data => {\r\n this.incomesTable.rows = _.sortBy(\r\n data.filter(x => x.category.categoryType == CategoryType.Income),\r\n [\r\n x => (x.category.type === 1 ? -1 : x.category.type),\r\n x => x.category.name.toLowerCase(),\r\n ]\r\n );\r\n this.expensesTable.rows = _.sortBy(\r\n data.filter(x => x.category.categoryType == CategoryType.Expense),\r\n [\r\n x => (x.category.type === 1 ? -1 : x.category.type),\r\n x => x.category.name.toLowerCase(),\r\n ]\r\n );\r\n\r\n const reducer = (accumulator, currentValue) =>\r\n accumulator + currentValue;\r\n\r\n const totalIncomeAmount: number = this.incomesTable.rows\r\n .map(x => x.expensesSum)\r\n .reduce(reducer, 0);\r\n const totalIncomePlanning: number = this.incomesTable.rows\r\n .map(x => x.currentPeriodBudget)\r\n .reduce(reducer, 0);\r\n\r\n const totalExpenseAmount: number = this.expensesTable.rows\r\n .map(x => x.expensesSum)\r\n .reduce(reducer, 0);\r\n const totalExpensePlanning: number = this.expensesTable.rows\r\n .map(x => x.currentPeriodBudget)\r\n .reduce(reducer, 0);\r\n\r\n this.totalTable.rows = [\r\n {\r\n category: { name: 'יתרה חודשית' },\r\n currentPeriodBudget: totalIncomeAmount,\r\n expensesSum: totalExpenseAmount,\r\n },\r\n ];\r\n\r\n this.expensesTotal.expensesSum = totalExpenseAmount;\r\n this.expensesTotal.planning = totalExpensePlanning;\r\n\r\n this.incomesTotal.incomesSum = totalIncomeAmount;\r\n this.incomesTotal.planning = totalIncomePlanning;\r\n\r\n this.mainTotalTable.rows = [\r\n {\r\n name: 'סה״כ הכנסות',\r\n planning: totalIncomePlanning,\r\n amount: totalIncomeAmount,\r\n },\r\n {\r\n name: 'סה״כ הוצאות',\r\n planning: totalExpensePlanning,\r\n amount: totalExpenseAmount,\r\n },\r\n {\r\n name: 'יתרה (הכנסות פחות הוצאות)',\r\n planning: totalIncomePlanning - totalExpensePlanning,\r\n amount: totalIncomeAmount - totalExpenseAmount,\r\n isCalc: true,\r\n },\r\n ];\r\n\r\n this.isLoading = false;\r\n },\r\n () => (this.isLoading = false)\r\n )\r\n );\r\n }\r\n\r\n editCategory(event, category: CategoryModel): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const dialogRef = this.dialog.open(CategoryEditComponent, {\r\n data: {\r\n category: category,\r\n startMonthDate: this.date.value,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n this.subs.add(\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.updateDateRange();\r\n }\r\n })\r\n );\r\n }\r\n\r\n savings: SavingModel[] = [];\r\n totalSavingAmount: number = 0;\r\n savingsIsLoading: boolean = false;\r\n showSavings: boolean = false;\r\n\r\n loans: LoanModel[] = [];\r\n totalLoanAmount: number = 0;\r\n loansIsLoading: boolean = false;\r\n showLoans: boolean = false;\r\n\r\n private destroy$: Subject = new Subject();\r\n\r\n loadSavings(): void {\r\n this.savingsIsLoading = true;\r\n\r\n this.savingService\r\n .list()\r\n .pipe(\r\n finalize(() => (this.savingsIsLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.savings = data;\r\n this.totalSavingAmount =\r\n _.sumBy(data, 'totalDepositsAmount') -\r\n _.sumBy(data, 'totalWithdrawalAmount');\r\n });\r\n }\r\n\r\n loadLoans(): void {\r\n this.loansIsLoading = true;\r\n\r\n this.loanService\r\n .list()\r\n .pipe(\r\n finalize(() => (this.loansIsLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.loans = data;\r\n this.totalLoanAmount = _.sumBy(data, 'totalLoanLeftAmount');\r\n });\r\n }\r\n\r\n editSaving(event: MouseEvent, item: SavingModel): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const dialogRef = this.dialog.open(SavingWidgetComponent, {\r\n width: '290px',\r\n data: {\r\n ...item,\r\n },\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Saving,\r\n object: { ...result },\r\n });\r\n this.loadSavings();\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n MatCheckboxChange,\r\n TransitionCheckState,\r\n} from '@angular/material/checkbox';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport {\r\n MatDialogRef,\r\n MAT_DIALOG_DATA,\r\n MatDialog,\r\n} from '@angular/material/dialog';\r\nimport { MY_FORMATS_DATE } from '@app/_common/dateFormats';\r\nimport {\r\n LoanPaymentModel,\r\n LoanModel,\r\n LoanPaymentType,\r\n} from '@app/_common/models/loan';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport {\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n PaymentService,\r\n LoanService,\r\n LoanPaymentService,\r\n} from '@app/_services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport moment from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { LoanWidgetComponent } from '../loan-widget/loan-widget.component';\r\n\r\n@Component({\r\n selector: 'app-loan-payment-widget',\r\n templateUrl: './loan-payment-widget.component.html',\r\n styleUrls: ['./loan-payment-widget.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_DATE },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class LoanPaymentWidgetComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n paymentForm: UntypedFormGroup;\r\n matcher = new MyErrorStateMatcher();\r\n\r\n loans: LoanModel[] = [];\r\n\r\n types: { id: number; value: string }[] = [\r\n {\r\n id: 0,\r\n value: 'תשלום חד פעמי',\r\n },\r\n {\r\n id: 1,\r\n value: 'תשלום חודשי קבוע',\r\n },\r\n ];\r\n\r\n loading: boolean = false;\r\n item: LoanPaymentModel;\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private toastr: ToastrService,\r\n @Optional() public dialogRef: MatDialogRef,\r\n private loanPaymentService: LoanPaymentService,\r\n private loanService: LoanService,\r\n private eventService: EventService,\r\n private translate: TranslateService,\r\n public dialog: MatDialog,\r\n @Optional() @Inject(MAT_DIALOG_DATA) public data: LoanPaymentModel\r\n ) {\r\n if (data) {\r\n this.item = data;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.paymentForm = this.formBuilder.group({\r\n amount: [0, Validators.required],\r\n loanId: [null, Validators.required],\r\n description: [''],\r\n type: [this.types[0].id, Validators.required],\r\n dateTime: [moment(), Validators.required],\r\n });\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(\r\n filter(\r\n e =>\r\n e.objectType === ObjectType.Loan ||\r\n e.objectType === ObjectType.LoanPayment\r\n ),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(event => {\r\n if (event.type === EventType.Select) {\r\n this.paymentForm.controls['loanId'].setValue(event.object.loanId);\r\n }\r\n if (\r\n event.type === EventType.Create ||\r\n event.type === EventType.Update ||\r\n event.type === EventType.Delete\r\n ) {\r\n this.loadLoans();\r\n }\r\n });\r\n\r\n if (this.item) {\r\n this.paymentForm.reset(this.item);\r\n this.paymentForm.controls['dateTime'].setValue(\r\n moment.utc(this.item.dateTime).local()\r\n );\r\n }\r\n\r\n this.loadLoans();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n loadLoans(): void {\r\n this.loanService\r\n .list()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.loans = data;\r\n if (\r\n !this.loans.some(\r\n x => x.id === this.paymentForm.controls['loanId'].value\r\n )\r\n ) {\r\n this.paymentForm.controls['loanId'].setValue(null);\r\n }\r\n });\r\n }\r\n\r\n onSubmit(event: any): void {\r\n if (this.paymentForm.invalid) {\r\n return;\r\n }\r\n\r\n const model: LoanPaymentModel = this.paymentForm.value;\r\n if (model.amount <= 0) {\r\n return;\r\n }\r\n\r\n if (this.item) {\r\n const payment = Object.assign(this.item, model);\r\n\r\n this.loanPaymentService\r\n .update(payment)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.LoanPayment,\r\n object: { ...data },\r\n });\r\n this.toastr.success('עודכן');\r\n\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n } else {\r\n this.resetForm(event);\r\n }\r\n },\r\n err => this.toastr.error('Error')\r\n );\r\n } else {\r\n this.loanPaymentService\r\n .save(model)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.LoanPayment,\r\n object: { ...data },\r\n });\r\n this.toastr.success('עודכן');\r\n\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n } else {\r\n this.resetForm(event);\r\n }\r\n },\r\n err => this.toastr.error('Error')\r\n );\r\n }\r\n }\r\n\r\n cancel(event): void {\r\n event.preventDefault();\r\n this.dialogRef.close();\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.paymentForm.value;\r\n oldValue.amount = 0;\r\n oldValue.description = '';\r\n oldValue.date = moment();\r\n oldValue.isFullAmount = false;\r\n oldValue.depositType = 0;\r\n\r\n event.target.reset();\r\n this.paymentForm.reset(oldValue);\r\n }\r\n\r\n createLoan(): void {\r\n this.dialog.open(LoanWidgetComponent, {\r\n data: null,\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport { MY_FORMATS_DATE } from '@app/_common/dateFormats';\r\nimport { Subject } from 'rxjs';\r\nimport { Moment } from 'moment';\r\nimport { LoanModel } from '@app/_common/models/loan';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n AuthenticationService,\r\n EventService,\r\n EventType,\r\n HelperService,\r\n LoanService,\r\n ObjectType,\r\n} from '@app/_services';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-loan-widget',\r\n templateUrl: './loan-widget.component.html',\r\n styleUrls: ['./loan-widget.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_DATE },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class LoanWidgetComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n public loan: LoanModel;\r\n public startMonthDate: Moment;\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n loanForm: UntypedFormGroup;\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private loanService: LoanService,\r\n private eventService: EventService,\r\n private toastr: ToastrService,\r\n @Optional() public dialogRef: MatDialogRef,\r\n @Optional() @Inject(MAT_DIALOG_DATA) public data: LoanModel\r\n ) {\r\n this.loan = data;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initLoan();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n initLoan() {\r\n if (this.loan) {\r\n this.loanForm = this.formBuilder.group({\r\n name: [this.loan.name, Validators.required],\r\n description: [this.loan.description],\r\n loanBalance: [this.loan.loanBalance, Validators.required],\r\n originalBalance: [this.loan.originalBalance],\r\n repaymentDate: [this.loan.repaymentDate],\r\n });\r\n } else {\r\n this.loanForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n description: [''],\r\n loanBalance: [0, Validators.required],\r\n originalBalance: [null],\r\n repaymentDate: [null],\r\n });\r\n }\r\n }\r\n\r\n submit(event: any): void {\r\n if (this.loanForm.invalid) {\r\n return;\r\n }\r\n\r\n if (this.loan) {\r\n const loan = Object.assign(this.loan, this.loanForm.value);\r\n\r\n this.loanService\r\n .update(loan)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n () => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Loan,\r\n object: { ...loan },\r\n });\r\n if (this.dialogRef) {\r\n this.dialogRef.close(true);\r\n }\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n } else {\r\n const loan: LoanModel = this.loanForm.value;\r\n this.loanService\r\n .save(loan)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.Loan,\r\n object: data,\r\n });\r\n if (this.dialogRef) {\r\n this.dialogRef.close(true);\r\n }\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n }\r\n\r\n cancelHandler(event: any): void {\r\n event.preventDefault();\r\n this.dialogRef.close();\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.loanForm.value as LoanModel;\r\n oldValue.name = '';\r\n oldValue.description = '';\r\n oldValue.loanBalance = 0;\r\n oldValue.originalBalance = null;\r\n oldValue.repaymentDate = null;\r\n\r\n event.target.reset();\r\n this.loanForm.reset(oldValue);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport {\r\n AuthenticationService,\r\n EventService,\r\n EventType,\r\n HelperService,\r\n ObjectType,\r\n LoanPaymentService,\r\n LoanService,\r\n} from '@app/_services';\r\nimport moment from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport { filter, finalize, takeUntil } from 'rxjs/operators';\r\nimport {\r\n LoanPaymentModel,\r\n LoanModel,\r\n LoanPaymentType,\r\n} from '@app/_common/models/loan';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { LoanWidgetComponent } from '../loan-widget/loan-widget.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { LoanPaymentWidgetComponent } from '../loan-payment-widget/loan-payment-widget.component';\r\nimport { DeleteDialogComponent } from '@app/_shared/delete-dialog/delete-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-loan',\r\n templateUrl: './loan.component.html',\r\n styleUrls: ['./loan.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class LoanComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n public date: UntypedFormControl;\r\n public selectedMonth: string = '';\r\n\r\n public groups: any = [];\r\n private payments: LoanPaymentModel[] = [];\r\n\r\n public isLoading: boolean = false;\r\n public isLoadingTable: boolean = false;\r\n\r\n public loanId: number;\r\n public loan: LoanModel;\r\n\r\n public total: number = 0;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private paymentService: LoanPaymentService,\r\n private loanService: LoanService,\r\n private eventService: EventService,\r\n private authenticationService: AuthenticationService,\r\n private helperService: HelperService,\r\n public dialog: MatDialog,\r\n private translate: TranslateService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.route.params.subscribe(params => {\r\n this.loanId = +params['id'];\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Loan,\r\n object: { loanId: this.loanId },\r\n });\r\n });\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(\r\n filter(e => e.objectType === ObjectType.LoanPayment),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(event => {\r\n if (\r\n ((event.type === EventType.Create ||\r\n event.type === EventType.Update) &&\r\n event.object.loanId === this,\r\n this.loanId)\r\n ) {\r\n this.load();\r\n }\r\n });\r\n\r\n this.setStartDate();\r\n this.updateDateRange();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setStartDate(): void {\r\n const selectedDate = localStorage.getItem('selectedDate');\r\n\r\n let monthDate;\r\n if (selectedDate) {\r\n const obj = JSON.parse(selectedDate);\r\n if (moment.utc() < moment(obj.expired)) {\r\n monthDate = moment(obj.date, null, 'he');\r\n }\r\n }\r\n\r\n if (!monthDate || !monthDate.isValid()) {\r\n const date = this.helperService.getMonthStartDate();\r\n monthDate = moment(\r\n new Date(\r\n date.year(),\r\n date.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n }\r\n this.date = new UntypedFormControl(monthDate);\r\n }\r\n\r\n updateDateRange(): void {\r\n const monthDate = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n this.selectedMonth = monthDate.format('YYYY MMM');\r\n\r\n this.load();\r\n }\r\n\r\n load(): void {\r\n if (!this.loanId) {\r\n return;\r\n }\r\n\r\n const date = this.date.value;\r\n this.groups = [];\r\n this.payments = [];\r\n\r\n this.isLoading = true;\r\n this.loanService\r\n .list(this.loanId)\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n if (data && data.length) {\r\n this.loan = data[0];\r\n }\r\n });\r\n\r\n this.loadPayments(date);\r\n }\r\n\r\n loadPayments(date: any): void {\r\n this.isLoadingTable = true;\r\n\r\n this.paymentService\r\n .list(0, null, this.loanId, date.year(), date.month() + 1)\r\n .pipe(\r\n finalize(() => (this.isLoadingTable = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.payments = data;\r\n\r\n const groups = _.groupBy(this.payments, x => {\r\n //console.info(x.dateTime);\r\n const date = moment.utc(x.dateTime, null, 'he').local();\r\n return date.format('dddd, D MMMM YYYY');\r\n });\r\n\r\n const result = [];\r\n _.forEach(groups, function (value, key) {\r\n result.push({\r\n date: key,\r\n payments: _.sortBy(value, x => moment.utc(x.dateTime)),\r\n });\r\n });\r\n\r\n this.groups = result;\r\n });\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n localStorage.setItem(\r\n 'selectedDate',\r\n JSON.stringify({\r\n date: this.date.value,\r\n expired: moment.utc().add(1, 'day'),\r\n })\r\n );\r\n this.updateDateRange();\r\n }\r\n\r\n editItem(item: any): void {\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(LoanPaymentWidgetComponent, {\r\n data: {\r\n ...item,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.LoanPayment,\r\n object: result,\r\n });\r\n this.load();\r\n }\r\n });\r\n }\r\n\r\n deleteItem(item: any): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n const date = moment(item.dateTime);\r\n this.paymentService\r\n .delete(item.id, date.year(), date.month() + 1)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.LoanPayment,\r\n object: item,\r\n });\r\n this.load();\r\n });\r\n }\r\n });\r\n }\r\n\r\n editLoan(): void {\r\n const dialogRef: MatDialogRef = this.dialog.open(\r\n LoanWidgetComponent,\r\n {\r\n data: {\r\n ...this.loan,\r\n },\r\n panelClass: 'main-widget-panel',\r\n }\r\n );\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Loan,\r\n object: { ...result },\r\n });\r\n this.load();\r\n }\r\n });\r\n }\r\n\r\n deleteLoan(): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n result => {\r\n if (result?.value) {\r\n this.loanService\r\n .delete(this.loan.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.Loan,\r\n object: this.loan,\r\n });\r\n this.router.navigate(['loans']);\r\n });\r\n }\r\n },\r\n err => this.toastr.error('Error')\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LoanComponent } from './loan/loan.component';\r\nimport { LoansComponent } from './loans/loans.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LoansComponent\r\n },\r\n {\r\n path: ':id',\r\n component: LoanComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LoansRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoansComponent } from './loans/loans.component';\r\nimport { LoanComponent } from './loan/loan.component';\r\nimport { LoanWidgetComponent } from './loan-widget/loan-widget.component';\r\nimport { LoansRoutingModule } from './loans-routing.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SharedModule } from '@app/_shared/shared.module';\r\nimport { LoanPaymentWidgetComponent } from './loan-payment-widget/loan-payment-widget.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoansComponent,\r\n LoanComponent,\r\n LoanWidgetComponent,\r\n LoanPaymentWidgetComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n LoansRoutingModule,\r\n TranslateModule,\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatSelectModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n LoanPaymentWidgetComponent\r\n ]\r\n})\r\nexport class LoansModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {\r\n AuthenticationService,\r\n EventService,\r\n EventType,\r\n LoanService,\r\n ObjectType,\r\n} from '@app/_services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, finalize, takeUntil } from 'rxjs/operators';\r\nimport { LoanWidgetComponent } from '../loan-widget/loan-widget.component';\r\nimport * as _ from 'lodash';\r\nimport { LoanModel } from '@app/_common/models/loan/loanModel';\r\nimport { DeleteDialogComponent } from '@app/_shared/delete-dialog/delete-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-loans',\r\n templateUrl: './loans.component.html',\r\n styleUrls: ['./loans.component.scss'],\r\n})\r\nexport class LoansComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n totalLoanAmount: number = 0;\r\n\r\n rows: LoanModel[] = [];\r\n public isLoading: boolean = false;\r\n\r\n constructor(\r\n private loanService: LoanService,\r\n private authenticationService: AuthenticationService,\r\n private eventService: EventService,\r\n public dialog: MatDialog,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.load();\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(\r\n filter(\r\n e =>\r\n e.objectType === ObjectType.Loan ||\r\n e.objectType === ObjectType.LoanPayment\r\n ),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(event => {\r\n if (\r\n event.type === EventType.Create ||\r\n event.type === EventType.Update ||\r\n event.type === EventType.Delete\r\n ) {\r\n this.load();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n load(): void {\r\n this.isLoading = true;\r\n this.loanService\r\n .list()\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.rows = data;\r\n this.totalLoanAmount = _.sumBy(data, 'totalLoanLeftAmount');\r\n });\r\n }\r\n\r\n editItem(event: MouseEvent, item: any): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const dialogRef: MatDialogRef = this.dialog.open(\r\n LoanWidgetComponent,\r\n {\r\n data: {\r\n ...item,\r\n },\r\n panelClass: 'main-widget-panel',\r\n }\r\n );\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Loan,\r\n object: { ...result },\r\n });\r\n }\r\n });\r\n }\r\n\r\n deleteItem(event: MouseEvent, item: any): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n this.loanService\r\n .delete(item.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.Loan,\r\n object: item,\r\n });\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\nimport { AuthenticationService, UserService } from '../_services';\r\nimport { Subscription } from 'rxjs';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss'],\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n loginForm: UntypedFormGroup;\r\n loading = false;\r\n returnUrl: string;\r\n error: any;\r\n\r\n forgotPasswordForm: UntypedFormGroup;\r\n isShowForgotPassword: boolean = false;\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n private subs: Subscription = new Subscription();\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private userService: UserService,\r\n private toastr: ToastrService,\r\n private translate: TranslateService\r\n ) {\r\n // redirect to home if already logged in\r\n if (this.authenticationService.currentUserValue) {\r\n this.router.navigate(['/']);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.loginForm = this.formBuilder.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required],\r\n IsAcceptedTermsOfUse: [false, Validators.pattern('true')],\r\n });\r\n\r\n this.forgotPasswordForm = this.formBuilder.group({\r\n username: ['', Validators.required],\r\n });\r\n\r\n // get return url from route parameters or default to '/'\r\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() {\r\n return this.loginForm.controls;\r\n }\r\n\r\n onSubmit() {\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n this.subs.add(\r\n this.authenticationService\r\n .login(this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(\r\n () => {\r\n this.userService.agreeTermsOfUse().subscribe(\r\n () => {\r\n this.router.navigate([this.returnUrl]);\r\n },\r\n error => {\r\n this.error = error;\r\n this.toastr.error(this.error);\r\n this.loading = false;\r\n this.authenticationService.logout();\r\n }\r\n );\r\n },\r\n error => {\r\n if (error === 'Bad Request') {\r\n this.error = this.translate.instant('login.loginFailed');\r\n } else if (error === 'Forbidden') {\r\n this.error = this.translate.instant('login.forbidden');\r\n } else {\r\n this.error = error.message;\r\n }\r\n if (this.error) {\r\n this.toastr.error(this.error);\r\n }\r\n\r\n this.loading = false;\r\n }\r\n )\r\n );\r\n }\r\n\r\n showForgotPassword(): void {\r\n this.isShowForgotPassword = true;\r\n this.loginForm.controls['password'].setValue('');\r\n }\r\n\r\n onForgotPasswordSubmit(): void {\r\n if (this.forgotPasswordForm.invalid) {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n this.subs.add(\r\n this.userService\r\n .forgotPassword({\r\n email: this.forgotPasswordForm.controls['username'].value,\r\n })\r\n .subscribe(\r\n () => {\r\n this.toastr.success('עודכן');\r\n this.loading = false;\r\n },\r\n error => {\r\n this.toastr.error('Error');\r\n this.loading = false;\r\n }\r\n )\r\n );\r\n }\r\n\r\n back(event): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.isShowForgotPassword = false;\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n MatCheckboxChange,\r\n TransitionCheckState,\r\n} from '@angular/material/checkbox';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport {\r\n MatDialogRef,\r\n MAT_DIALOG_DATA,\r\n MatDialog,\r\n} from '@angular/material/dialog';\r\nimport { MY_FORMATS_DATE } from '@app/_common/dateFormats';\r\nimport {\r\n PaymentModel,\r\n SavingModel,\r\n SavingPaymentType,\r\n} from '@app/_common/models/saving';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport {\r\n EventService,\r\n EventType,\r\n ObjectType,\r\n PaymentService,\r\n SavingService,\r\n} from '@app/_services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport moment from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { SavingWidgetComponent } from '../saving-widget/saving-widget.component';\r\n\r\n@Component({\r\n selector: 'app-payment-widget',\r\n templateUrl: './payment-widget.component.html',\r\n styleUrls: ['./payment-widget.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_DATE },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class PaymentWidgetComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n paymentForm: UntypedFormGroup;\r\n matcher = new MyErrorStateMatcher();\r\n\r\n savings: SavingModel[] = [];\r\n\r\n depositTypes: { id: number; value: string }[] = [\r\n {\r\n id: 0,\r\n value: 'הפקדה',\r\n },\r\n {\r\n id: 1,\r\n value: 'הפקדה חודשית קבועה',\r\n },\r\n {\r\n id: 2,\r\n value: 'עדכון תשואה (שקלים)',\r\n },\r\n ];\r\n\r\n loading: boolean = false;\r\n\r\n tab: string = 'depositTab';\r\n item: PaymentModel;\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private toastr: ToastrService,\r\n @Optional() public dialogRef: MatDialogRef,\r\n private paymentService: PaymentService,\r\n private savingService: SavingService,\r\n private eventService: EventService,\r\n private translate: TranslateService,\r\n public dialog: MatDialog,\r\n @Optional() @Inject(MAT_DIALOG_DATA) public data: PaymentModel\r\n ) {\r\n if (data) {\r\n this.item = data;\r\n if (this.item.type === 1) {\r\n this.tab = 'withdrawalTab';\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.paymentForm = this.formBuilder.group({\r\n amount: [0, Validators.required],\r\n savingId: [null, Validators.required],\r\n description: [''],\r\n depositType: [this.depositTypes[0].id, Validators.required], // for deposit only\r\n type: [0, Validators.required],\r\n dateTime: [moment(), Validators.required],\r\n isFullAmount: [false],\r\n });\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(\r\n filter(\r\n e =>\r\n e.objectType === ObjectType.Saving ||\r\n e.objectType === ObjectType.SavingPayment\r\n ),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(event => {\r\n if (event.type === EventType.Select) {\r\n this.paymentForm.controls['savingId'].setValue(event.object.savingId);\r\n }\r\n if (\r\n event.type === EventType.Create ||\r\n event.type === EventType.Update ||\r\n event.type === EventType.Delete\r\n ) {\r\n this.loadSavings();\r\n }\r\n });\r\n\r\n if (this.item) {\r\n this.paymentForm.reset(this.item);\r\n\r\n if (this.item.type == SavingPaymentType.Withdrawal) {\r\n this.paymentForm.controls['depositType'].removeValidators([\r\n Validators.required,\r\n ]);\r\n }\r\n\r\n this.paymentForm.controls['dateTime'].setValue(\r\n moment.utc(this.item.dateTime).local()\r\n );\r\n }\r\n\r\n this.loadSavings();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n loadSavings(): void {\r\n this.savingService\r\n .list()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.savings = data;\r\n if (\r\n !this.savings.some(\r\n x => x.id === this.paymentForm.controls['savingId'].value\r\n )\r\n ) {\r\n this.paymentForm.controls['savingId'].setValue(null);\r\n }\r\n });\r\n }\r\n\r\n reset(tab: string): void {\r\n this.tab = tab;\r\n if (this.tab === 'depositTab') {\r\n this.paymentForm.controls['type'].setValue(0);\r\n } else {\r\n this.paymentForm.controls['type'].setValue(1);\r\n }\r\n }\r\n\r\n onSubmit(event: any): void {\r\n if (this.paymentForm.invalid) {\r\n return;\r\n }\r\n\r\n const model: PaymentModel = this.paymentForm.value;\r\n if (model.amount <= 0) {\r\n return;\r\n }\r\n\r\n if (this.item) {\r\n const payment = Object.assign(this.item, model);\r\n\r\n this.paymentService\r\n .update(payment)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.SavingPayment,\r\n object: { ...data },\r\n });\r\n this.toastr.success('עודכן');\r\n\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n } else {\r\n this.resetForm(event);\r\n }\r\n },\r\n err => this.toastr.error('Error')\r\n );\r\n } else {\r\n if (model.type == SavingPaymentType.Withdrawal) {\r\n if (model.amount > this.getFullAmount()) {\r\n this.toastr.error(\r\n this.translate.instant('paymentWidget.notEnoughBalanceInSavings')\r\n );\r\n return;\r\n }\r\n }\r\n\r\n this.paymentService\r\n .save(model)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.SavingPayment,\r\n object: { ...data },\r\n });\r\n this.toastr.success('עודכן');\r\n\r\n if (this.dialogRef) {\r\n this.dialogRef.close();\r\n } else {\r\n this.resetForm(event);\r\n }\r\n },\r\n err => this.toastr.error('Error')\r\n );\r\n }\r\n }\r\n\r\n cancel(event): void {\r\n event.preventDefault();\r\n this.dialogRef.close();\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.paymentForm.value;\r\n oldValue.amount = 0;\r\n oldValue.description = '';\r\n oldValue.date = moment();\r\n oldValue.isFullAmount = false;\r\n oldValue.depositType = 0;\r\n\r\n event.target.reset();\r\n this.paymentForm.reset(oldValue);\r\n }\r\n\r\n choseSaving(): void {\r\n if (this.paymentForm.controls['isFullAmount'].value) {\r\n this.setFullAmount();\r\n }\r\n }\r\n\r\n fillFullAmount(event: MatCheckboxChange): void {\r\n if (event.checked) {\r\n this.setFullAmount();\r\n }\r\n }\r\n\r\n setFullAmount(): void {\r\n this.paymentForm.controls['amount'].setValue(this.getFullAmount());\r\n }\r\n\r\n getFullAmount(): number {\r\n const saving = this.savings.find(\r\n x => x.id == this.paymentForm.controls['savingId'].value\r\n );\r\n if (saving) {\r\n let amount = saving.totalDepositsAmount - saving.totalWithdrawalAmount;\r\n if (amount < 0) {\r\n amount = 0;\r\n }\r\n return amount;\r\n }\r\n }\r\n\r\n createSaving(): void {\r\n this.dialog.open(SavingWidgetComponent, {\r\n data: null,\r\n panelClass: 'main-widget-panel',\r\n });\r\n }\r\n}\r\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport {\r\n UntypedFormBuilder,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MY_FORMATS_DATE } from '@app/_common/dateFormats';\r\nimport { SavingModel } from '@app/_common/models/saving';\r\nimport { MyErrorStateMatcher } from '@app/_helpers';\r\nimport {\r\n AuthenticationService,\r\n EventService,\r\n EventType,\r\n HelperService,\r\n ObjectType,\r\n SavingService,\r\n} from '@app/_services';\r\nimport { Moment } from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-saving-widget',\r\n templateUrl: './saving-widget.component.html',\r\n styleUrls: ['./saving-widget.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_DATE },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class SavingWidgetComponent implements OnInit {\r\n private destroy$: Subject = new Subject();\r\n\r\n public saving: SavingModel;\r\n public startMonthDate: Moment;\r\n\r\n matcher = new MyErrorStateMatcher();\r\n\r\n savingForm: UntypedFormGroup;\r\n\r\n constructor(\r\n private formBuilder: UntypedFormBuilder,\r\n private authenticationService: AuthenticationService,\r\n private savingService: SavingService,\r\n private eventService: EventService,\r\n private toastr: ToastrService,\r\n private helperService: HelperService,\r\n @Optional() public dialogRef: MatDialogRef,\r\n @Optional() @Inject(MAT_DIALOG_DATA) public data: SavingModel\r\n ) {\r\n this.saving = data;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initSaving();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n initSaving() {\r\n if (this.saving) {\r\n this.savingForm = this.formBuilder.group({\r\n name: [this.saving.name, Validators.required],\r\n description: [this.saving.description],\r\n startingAmount: [this.saving.startingAmount, Validators.required],\r\n goalAmount: [this.saving.goalAmount],\r\n goalDate: [this.saving.goalDate],\r\n });\r\n } else {\r\n this.savingForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n description: [''],\r\n startingAmount: [null],\r\n goalAmount: [null],\r\n goalDate: [null],\r\n });\r\n }\r\n }\r\n\r\n submit(event: any): void {\r\n if (this.savingForm.invalid) {\r\n return;\r\n }\r\n\r\n if (this.saving) {\r\n const saving = Object.assign(this.saving, this.savingForm.value);\r\n\r\n this.savingService\r\n .update(saving)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Saving,\r\n object: { ...saving },\r\n });\r\n if (this.dialogRef) {\r\n this.dialogRef.close(true);\r\n }\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n } else {\r\n const saving: SavingModel = this.savingForm.value;\r\n\r\n if (saving.startingAmount === null) {\r\n saving.startingAmount = 0;\r\n }\r\n\r\n this.savingService\r\n .save(saving)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.resetForm(event);\r\n this.eventService.send({\r\n type: EventType.Create,\r\n objectType: ObjectType.Saving,\r\n object: data,\r\n });\r\n if (this.dialogRef) {\r\n this.dialogRef.close(true);\r\n }\r\n this.toastr.success('עודכן');\r\n },\r\n err => {\r\n this.toastr.error('Error');\r\n console.warn(err);\r\n }\r\n );\r\n }\r\n }\r\n\r\n cancelHandler(event: any): void {\r\n event.preventDefault();\r\n this.dialogRef.close();\r\n }\r\n\r\n resetForm(event: any): void {\r\n const oldValue = this.savingForm.value as SavingModel;\r\n oldValue.name = '';\r\n oldValue.description = '';\r\n oldValue.startingAmount = 0;\r\n oldValue.goalAmount = null;\r\n oldValue.goalDate = null;\r\n\r\n event.target.reset();\r\n this.savingForm.reset(oldValue);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport {\r\n AuthenticationService,\r\n EventService,\r\n EventType,\r\n HelperService,\r\n ObjectType,\r\n PaymentService,\r\n SavingService,\r\n} from '@app/_services';\r\nimport moment from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\nimport { filter, finalize, takeUntil } from 'rxjs/operators';\r\nimport {\r\n PaymentModel,\r\n SavingModel,\r\n SavingPaymentType,\r\n} from '@app/_common/models/saving';\r\nimport { PaymentWidgetComponent } from '../payment-widget/payment-widget.component';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { SavingWidgetComponent } from '../saving-widget/saving-widget.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DeleteDialogComponent } from '@app/_shared/delete-dialog/delete-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-saving',\r\n templateUrl: './saving.component.html',\r\n styleUrls: ['./saving.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class SavingComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n public date: UntypedFormControl;\r\n public selectedMonth: string = '';\r\n\r\n public groups: any = [];\r\n private payments: PaymentModel[] = [];\r\n\r\n public isLoading: boolean = false;\r\n public isLoadingTable: boolean = false;\r\n\r\n public savingId: number;\r\n public saving: SavingModel;\r\n\r\n public total: number = 0;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private paymentService: PaymentService,\r\n private savingService: SavingService,\r\n private eventService: EventService,\r\n private authenticationService: AuthenticationService,\r\n private helperService: HelperService,\r\n public dialog: MatDialog,\r\n private translate: TranslateService,\r\n private toastr: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.route.params.subscribe(params => {\r\n this.savingId = +params['id'];\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Saving,\r\n object: { savingId: this.savingId },\r\n });\r\n });\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(\r\n filter(e => e.objectType === ObjectType.SavingPayment),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(event => {\r\n if (\r\n ((event.type === EventType.Create ||\r\n event.type === EventType.Update) &&\r\n event.object.savingId === this,\r\n this.savingId)\r\n ) {\r\n this.load();\r\n }\r\n });\r\n\r\n this.setStartDate();\r\n this.updateDateRange();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setStartDate(): void {\r\n const selectedDate = localStorage.getItem('selectedDate');\r\n\r\n let monthDate;\r\n if (selectedDate) {\r\n const obj = JSON.parse(selectedDate);\r\n if (moment.utc() < moment(obj.expired)) {\r\n monthDate = moment(obj.date, null, 'he');\r\n }\r\n }\r\n\r\n if (!monthDate || !monthDate.isValid()) {\r\n const date = this.helperService.getMonthStartDate();\r\n monthDate = moment(\r\n new Date(\r\n date.year(),\r\n date.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n }\r\n this.date = new UntypedFormControl(monthDate);\r\n }\r\n\r\n updateDateRange(): void {\r\n const monthDate: Moment = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n this.selectedMonth = monthDate.format('YYYY MMM');\r\n\r\n this.load();\r\n }\r\n\r\n load(): void {\r\n const date = this.date.value;\r\n this.groups = [];\r\n this.payments = [];\r\n\r\n this.isLoading = true;\r\n this.savingService\r\n .list(this.savingId)\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n if (data && data.length) {\r\n this.saving = data[0];\r\n }\r\n });\r\n\r\n this.loadPayments(date);\r\n }\r\n\r\n loadPayments(date: any): void {\r\n this.isLoadingTable = true;\r\n\r\n this.paymentService\r\n .list(0, null, this.savingId, date.year(), date.month() + 1)\r\n .pipe(\r\n finalize(() => (this.isLoadingTable = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.payments = data;\r\n\r\n const groups = _.groupBy(this.payments, x => {\r\n //console.info(x.dateTime);\r\n const date = moment.utc(x.dateTime, null, 'he').local();\r\n return date.format('dddd, D MMMM YYYY');\r\n });\r\n\r\n const result = [];\r\n _.forEach(groups, function (value, key) {\r\n result.push({\r\n date: key,\r\n payments: _.sortBy(value, x => moment.utc(x.dateTime)),\r\n });\r\n });\r\n\r\n this.groups = result;\r\n this.total =\r\n _.sumBy(\r\n this.payments.filter(x => x.type === SavingPaymentType.Deposit),\r\n 'amount'\r\n ) -\r\n _.sumBy(\r\n this.payments.filter(x => x.type === SavingPaymentType.Withdrawal),\r\n 'amount'\r\n );\r\n });\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n localStorage.setItem(\r\n 'selectedDate',\r\n JSON.stringify({\r\n date: this.date.value,\r\n expired: moment.utc().add(1, 'day'),\r\n })\r\n );\r\n this.updateDateRange();\r\n }\r\n\r\n editItem(item: any): void {\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(PaymentWidgetComponent, {\r\n data: {\r\n ...item,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.SavingPayment,\r\n object: result,\r\n });\r\n this.load();\r\n }\r\n });\r\n }\r\n\r\n deleteItem(item: any): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n const date = moment(item.dateTime);\r\n this.paymentService\r\n .delete(item.id, date.year(), date.month() + 1)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.SavingPayment,\r\n object: item,\r\n });\r\n this.load();\r\n });\r\n }\r\n });\r\n }\r\n\r\n editSaving(): void {\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(SavingWidgetComponent, {\r\n data: {\r\n ...this.saving,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Saving,\r\n object: { ...result },\r\n });\r\n this.load();\r\n }\r\n });\r\n }\r\n\r\n deleteSaving(): void {\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n result => {\r\n if (result?.value) {\r\n this.savingService\r\n .delete(this.saving.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.Saving,\r\n object: this.saving,\r\n });\r\n this.router.navigate(['savings']);\r\n });\r\n }\r\n },\r\n err => this.toastr.error('Error')\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { SavingComponent } from './saving/saving.component';\r\nimport { SavingsComponent } from './savings.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: SavingsComponent\r\n },\r\n {\r\n path: ':id',\r\n component: SavingComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class SavingsRoutingModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n MomentDateAdapter,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\nimport { SavingModel } from '@app/_common/models/saving';\r\nimport {\r\n AuthenticationService,\r\n DataService,\r\n EventService,\r\n EventType,\r\n HelperService,\r\n ObjectType,\r\n SavingService,\r\n} from '@app/_services';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport moment from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, finalize, takeUntil } from 'rxjs/operators';\r\nimport { SavingWidgetComponent } from './saving-widget/saving-widget.component';\r\nimport * as _ from 'lodash';\r\nimport { DeleteDialogComponent } from '@app/_shared/delete-dialog/delete-dialog.component';\r\n@Component({\r\n selector: 'app-savings',\r\n templateUrl: './savings.component.html',\r\n styleUrls: ['./savings.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class SavingsComponent implements OnInit, OnDestroy {\r\n private destroy$: Subject = new Subject();\r\n\r\n rows: SavingModel[] = [];\r\n\r\n public startMonthDate: string;\r\n public endMonthDate: string;\r\n public date: UntypedFormControl;\r\n\r\n totalSavingAmount: number = 0;\r\n\r\n public isLoading: boolean = false;\r\n\r\n constructor(\r\n private savingService: SavingService,\r\n private authenticationService: AuthenticationService,\r\n private eventService: EventService,\r\n private dataService: DataService,\r\n private helperService: HelperService,\r\n public dialog: MatDialog,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.setStartDate();\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(\r\n filter(\r\n e =>\r\n e.objectType === ObjectType.Saving ||\r\n e.objectType === ObjectType.SavingPayment\r\n ),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(event => {\r\n if (\r\n event.type === EventType.Create ||\r\n event.type === EventType.Update ||\r\n event.type === EventType.Delete\r\n ) {\r\n this.load();\r\n }\r\n });\r\n\r\n this.dataService.data.pipe(takeUntil(this.destroy$)).subscribe(data => {\r\n if (data.date) {\r\n this.date.setValue(data.date);\r\n }\r\n\r\n this.updateDateRange(false);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setStartDate(): void {\r\n const selectedDate = localStorage.getItem('selectedDate');\r\n\r\n let monthDate;\r\n if (selectedDate) {\r\n const obj = JSON.parse(selectedDate);\r\n if (moment.utc() < moment(obj.expired)) {\r\n monthDate = moment(obj.date, null, 'he');\r\n }\r\n }\r\n\r\n if (!monthDate || !monthDate.isValid()) {\r\n const date = this.helperService.getMonthStartDate();\r\n monthDate = moment(\r\n new Date(\r\n date.year(),\r\n date.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n ),\r\n null,\r\n 'he'\r\n );\r\n }\r\n\r\n this.date = new UntypedFormControl(monthDate);\r\n }\r\n\r\n chosenYearHandler(normalizedYear: Moment) {\r\n const ctrlValue = this.date.value;\r\n ctrlValue.year(normalizedYear.year());\r\n this.date.setValue(ctrlValue);\r\n }\r\n\r\n chosenMonthHandler(\r\n normalizedMonth: Moment,\r\n datepicker: MatDatepicker\r\n ) {\r\n this.date.setValue(normalizedMonth);\r\n datepicker.close();\r\n\r\n localStorage.setItem(\r\n 'selectedDate',\r\n JSON.stringify({\r\n date: this.date.value,\r\n expired: moment.utc().add(1, 'day'),\r\n })\r\n );\r\n this.updateDateRange();\r\n }\r\n\r\n updateDateRange(updateData: boolean = true): void {\r\n if (updateData) {\r\n this.dataService.updatedDataSelection({ date: this.date.value });\r\n }\r\n\r\n const monthDate = moment(\r\n new Date(\r\n this.date.value.year(),\r\n this.date.value.month(),\r\n this.authenticationService.currentUserValue.user.startMonthDay\r\n )\r\n );\r\n this.startMonthDate = monthDate.format('DD.MM.YYYY');\r\n this.endMonthDate = monthDate\r\n .add(1, 'months')\r\n .add(-1, 'days')\r\n .format('DD.MM.YYYY');\r\n\r\n this.load();\r\n this.eventService.send({\r\n type: EventType.Select,\r\n objectType: ObjectType.Date,\r\n object: this.date.value,\r\n });\r\n }\r\n\r\n load(): void {\r\n this.isLoading = true;\r\n this.savingService\r\n .list()\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.rows = data;\r\n this.totalSavingAmount =\r\n _.sumBy(data, 'totalDepositsAmount') -\r\n _.sumBy(data, 'totalWithdrawalAmount');\r\n });\r\n }\r\n\r\n editItem(event: MouseEvent, item: any): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const dialogRef: MatDialogRef =\r\n this.dialog.open(SavingWidgetComponent, {\r\n data: {\r\n ...item,\r\n },\r\n panelClass: 'main-widget-panel',\r\n });\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result) {\r\n this.eventService.send({\r\n type: EventType.Update,\r\n objectType: ObjectType.Saving,\r\n object: { ...result },\r\n });\r\n }\r\n });\r\n }\r\n\r\n deleteItem(event: MouseEvent, item: any): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.dialog\r\n .open(DeleteDialogComponent, {\r\n panelClass: 'main-widget-panel',\r\n })\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(result => {\r\n if (result?.value) {\r\n this.savingService\r\n .delete(item.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.eventService.send({\r\n type: EventType.Delete,\r\n objectType: ObjectType.Saving,\r\n object: item,\r\n });\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SavingsRoutingModule } from './savings-routing.module';\r\nimport { SavingsComponent } from './savings.component';\r\nimport { SavingWidgetComponent } from './saving-widget/saving-widget.component';\r\nimport { PaymentWidgetComponent } from './payment-widget/payment-widget.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SavingComponent } from './saving/saving.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SharedModule } from '@app/_shared/shared.module';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n SavingsComponent,\r\n SavingWidgetComponent,\r\n PaymentWidgetComponent,\r\n SavingComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SavingsRoutingModule,\r\n TranslateModule,\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatButtonModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n PaymentWidgetComponent\r\n ]\r\n})\r\nexport class SavingsModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UserModel } from '@app/_common/models';\nimport { MyErrorStateMatcher } from '@app/_helpers';\nimport { UserService } from '@app/_services';\nimport moment, { Moment, months } from 'moment';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n private destroy$: Subject = new Subject();\n\n settingsForm: FormGroup;\n matcher = new MyErrorStateMatcher();\n\n currentUser: UserModel;\n photoBase64: string;\n isLoading: boolean = false;\n currentWeekString: string = 'שבוע';\n\n isEdit: boolean = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private userService: UserService,\n private toastr: ToastrService,\n public dialogRef: MatDialogRef\n ) {}\n\n ngOnInit(): void {\n this.settingsForm = this.formBuilder.group({\n name: [null, Validators.required],\n startMonthDay: [\n null,\n [Validators.required, Validators.min(1), Validators.max(28)],\n ],\n photoBase64: [null],\n });\n\n this.loadCurrentUser();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCurrentUser(): void {\n this.isLoading = true;\n this.userService\n .getMe()\n .pipe(\n finalize(() => (this.isLoading = false)),\n takeUntil(this.destroy$)\n )\n .subscribe(data => {\n this.currentUser = data;\n this.photoBase64 = '/' + this.currentUser.photoUrl;\n\n const today: Moment = moment().startOf('day');\n let starDate: Moment = today.clone();\n if (starDate.date() < this.currentUser.startMonthDay) {\n starDate = moment()\n .subtract(1, 'month')\n .date(this.currentUser.startMonthDay);\n } else {\n starDate = moment()\n .startOf('month')\n .date(this.currentUser.startMonthDay);\n }\n\n let endDate: Moment = starDate.clone();\n let numberOfWeeks: number = 0;\n while (endDate <= today) {\n endDate = endDate.add(1, 'week');\n numberOfWeeks++;\n }\n\n if (starDate.add(1, 'month') < endDate) {\n endDate = starDate;\n }\n\n this.currentWeekString =\n 'שבוע ' +\n numberOfWeeks +\n ' (' +\n endDate.clone().add(-1, 'week').date() +\n '-' +\n endDate.clone().add(-1, 'day').date() +\n ') ';\n\n this.settingsForm.patchValue(data);\n });\n }\n\n loadFile(event: any): void {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n this.photoBase64 = reader.result as string;\n this.settingsForm.patchValue({\n photoBase64: this.photoBase64,\n });\n };\n }\n\n edit(): void {\n this.isEdit = true;\n }\n\n submit(event: any): void {\n if (this.settingsForm.invalid) {\n return;\n }\n\n const user = { ...this.currentUser, ...this.settingsForm.value };\n this.isLoading = true;\n this.userService\n .update(user)\n .pipe(\n finalize(() => (this.isLoading = false)),\n takeUntil(this.destroy$)\n )\n .subscribe(\n () => {\n this.toastr.success('עודכן');\n this.isEdit = false;\n this.loadCurrentUser();\n },\n error => {\n this.toastr.error('Error');\n }\n );\n }\n\n cancelHandler(event: any): void {\n this.isEdit = false;\n this.loadCurrentUser();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport { CategoryModel, ProjectModel, ProjectType } from '@app/_common/models';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n ReportService,\r\n ProjectService,\r\n CategoryService,\r\n EventService,\r\n ObjectType,\r\n EventType,\r\n} from '@app/_services';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment } from 'moment';\r\nimport * as Chart from 'chart.js';\r\nimport 'chartjs-plugin-style';\r\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\r\nimport * as _ from 'lodash';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-stats',\r\n templateUrl: './stats.component.html',\r\n styleUrls: ['./stats.component.scss'],\r\n})\r\nexport class StatsComponent implements OnInit, OnDestroy {\r\n public projectControl = new UntypedFormControl();\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n public categoryControl = new UntypedFormControl();\r\n categories: CategoryModel[] = [];\r\n selectedCategoryIds: number[] = [];\r\n\r\n lineChart: any = {};\r\n data = {\r\n labels: [],\r\n datasets: [\r\n {\r\n label: 'expense',\r\n borderColor: '#cba469',\r\n pointBorderColor: '#87b3bf',\r\n pointBackgroundColor: '#87b3bf',\r\n pointRadius: 7,\r\n pointHoverRadius: 7,\r\n pointHitRadius: 7,\r\n pointBorderWidth: 1,\r\n borderWidth: 1,\r\n backgroundColor: 'transparent',\r\n lineTension: 0.3,\r\n categoryPercentage: 0.2,\r\n data: [],\r\n },\r\n ],\r\n };\r\n\r\n public isLoading: boolean = false;\r\n\r\n average: number = 0;\r\n\r\n private destroy$: Subject = new Subject();\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private projectService: ProjectService,\r\n private categoryService: CategoryService,\r\n private eventService: EventService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.createChart();\r\n this.fetchProjects();\r\n\r\n this.eventService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (\r\n event.objectType === ObjectType.Expense &&\r\n event.type === EventType.Create\r\n ) {\r\n this.loadChartData(this.selectedCategoryIds);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n fetchProjects(): void {\r\n this.projectService\r\n .list(null)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n localStorage.setItem(\r\n 'currentProject',\r\n this.currentProject.id.toString()\r\n );\r\n }\r\n\r\n this.projectControl.setValue(this.currentProject.id);\r\n this.load();\r\n }\r\n });\r\n }\r\n\r\n updateProject(event: any): void {\r\n this.currentProject = this.projects.find(x => x.id === event.value);\r\n this.load();\r\n }\r\n\r\n load(): void {\r\n this.isLoading = true;\r\n\r\n this.categoryService\r\n .statsExpensesList(this.currentProject.id)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.categories = _.sortBy(data, [x => x.name.toLowerCase()]);\r\n this.selectedCategoryIds = this.categories.map(x => x.id);\r\n\r\n this.updateSelectAllCategoriesState();\r\n this.loadChartData(this.selectedCategoryIds);\r\n });\r\n }\r\n\r\n updateCategoriesHandler(event): void {\r\n this.selectedCategoryIds = event.value;\r\n this.updateSelectAllCategoriesState();\r\n }\r\n\r\n selectAllCategories(event): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (this.selectedCategoryIds.indexOf(0) > -1) {\r\n this.selectedCategoryIds = [];\r\n } else {\r\n this.selectedCategoryIds = [...this.categories.map(x => x.id).sort(), 0];\r\n }\r\n }\r\n\r\n updateSelectAllCategoriesState(): void {\r\n const selectedCategoryIds = this.selectedCategoryIds\r\n .filter(x => x !== 0)\r\n .sort();\r\n const allCategories = this.categories.map(x => x.id).sort();\r\n if (_.isEqual(selectedCategoryIds, allCategories)) {\r\n this.selectedCategoryIds = [...selectedCategoryIds, 0];\r\n } else {\r\n this.selectedCategoryIds = selectedCategoryIds;\r\n }\r\n }\r\n\r\n updateCategoriesState(isOpen): void {\r\n if (!isOpen) {\r\n this.loadChartData(this.selectedCategoryIds);\r\n }\r\n }\r\n\r\n loadChartData(selectedCategoryIds): void {\r\n this.isLoading = true;\r\n this.reportService\r\n .getCategoriesYearlyReport(selectedCategoryIds)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n this.data.labels = data.months.map(x =>\r\n moment(x.date).locale('he').format('MMM')\r\n );\r\n this.data.datasets[0].data = data.months.map(x => x.amount);\r\n this.lineChart.update();\r\n this.average = _.mean(data.months.map(x => x.amount)).toFixed(0);\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n createChart(): void {\r\n this.lineChart = new Chart('statsCanvas', {\r\n type: 'line',\r\n data: this.data,\r\n plugins: [ChartDataLabels],\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n tooltips: {\r\n enabled: false,\r\n },\r\n legend: {\r\n display: false,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n display: true,\r\n gridLines: {\r\n color: '#ddccc2',\r\n lineWidth: 2,\r\n offsetGridLines: true,\r\n zeroLineBorderDashOffset: 100,\r\n },\r\n ticks: {\r\n fontFamily: \"'Open Sans', 'sans-serif'\",\r\n fontSize: 15,\r\n fontColor: '#8b8989',\r\n min: 0,\r\n autoSkip: false,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n display: true,\r\n gridLines: {\r\n display: false,\r\n color: '#ddccc2',\r\n lineWidth: 2,\r\n },\r\n ticks: {\r\n min: 0,\r\n padding: 20,\r\n fontFamily: \"'Open Sans', 'sans-serif'\",\r\n fontSize: 15,\r\n fontColor: '#8b8989',\r\n beginAtZero: true,\r\n },\r\n },\r\n ],\r\n },\r\n plugins: {\r\n // Change options for ALL labels of THIS CHART\r\n datalabels: {\r\n color: '#8b8989',\r\n font: {\r\n family: \"'Open Sans', 'sans-serif'\",\r\n size: 15,\r\n },\r\n anchor: 'end',\r\n align: -80,\r\n formatter: (value: number, context) => {\r\n return value.toLocaleString('en-us');\r\n },\r\n },\r\n },\r\n layout: {\r\n padding: {\r\n left: 0,\r\n right: 50,\r\n top: 50,\r\n bottom: 0,\r\n },\r\n },\r\n },\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-term-of-use',\r\n templateUrl: './term-of-use.component.html',\r\n styleUrls: ['./term-of-use.component.scss']\r\n})\r\nexport class TermOfUseComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n ReportService,\r\n ProjectService,\r\n EventService,\r\n ObjectType,\r\n EventType,\r\n} from '@app/_services';\r\nimport { FormControl, FormGroup, UntypedFormControl } from '@angular/forms';\r\nimport { ProjectModel, ProjectType } from '@app/_common/models';\r\nimport * as _moment from 'moment';\r\nimport { default as _rollupMoment, Moment } from 'moment';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport {\r\n MomentDateAdapter,\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n} from '@angular/material-moment-adapter';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { MY_FORMATS_MONTH } from '@app/_common/dateFormats';\r\n\r\nconst moment = _rollupMoment || _moment;\r\n\r\n@Component({\r\n selector: 'app-years-reports',\r\n templateUrl: './years-reports.component.html',\r\n styleUrls: ['./years-reports.component.scss'],\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: MomentDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS_MONTH },\r\n { provide: MAT_DATE_LOCALE, useValue: 'he' },\r\n ],\r\n})\r\nexport class YearsReportsComponent implements OnInit {\r\n private destroy$: Subject = new Subject();\r\n\r\n public projectControl = new UntypedFormControl();\r\n projects: ProjectModel[] = [];\r\n currentProject: ProjectModel;\r\n\r\n range: FormGroup = new FormGroup({\r\n startDate: new FormControl(moment().add(-1, 'year').startOf('year')),\r\n endDate: new FormControl(moment().endOf('year')),\r\n });\r\n\r\n public selectedStartYear: number;\r\n public selectedEndYear: number;\r\n\r\n displayedColumns: string[] = [];\r\n columns: any[] = [];\r\n\r\n dataSource: any[] = [];\r\n\r\n public isLoading: boolean = false;\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private projectService: ProjectService,\r\n private eventService: EventService\r\n ) {\r\n this.eventService\r\n .getUpdate()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(event => {\r\n if (\r\n (event.objectType === ObjectType.Expense ||\r\n event.object === ObjectType.Income) &&\r\n event.type === EventType.Create\r\n ) {\r\n this.load();\r\n }\r\n });\r\n\r\n this.selectedStartYear = this.range.get('startDate').value.format('YYYY');\r\n this.selectedEndYear = this.range.get('endDate').value.format('YYYY');\r\n }\r\n\r\n ngOnInit() {\r\n this.fetchProjects();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n fetchProjects(): void {\r\n this.isLoading = true;\r\n this.projectService\r\n .list(null)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n data => {\r\n this.projects = data.filter(x => x.type != ProjectType.AdHoc); // don't support AdHoc on phase 1\r\n if (this.projects.length > 0) {\r\n const currentProjectId: number = +(\r\n localStorage.getItem('currentProject') || '0'\r\n );\r\n\r\n this.currentProject = this.projects.find(\r\n x => x.id === currentProjectId\r\n );\r\n\r\n if (!this.currentProject) {\r\n this.currentProject = this.projects[0];\r\n localStorage.setItem(\r\n 'currentProject',\r\n this.currentProject.id.toString()\r\n );\r\n }\r\n\r\n this.projectControl.setValue(this.currentProject.id);\r\n this.load();\r\n }\r\n },\r\n () => (this.isLoading = false)\r\n );\r\n }\r\n\r\n updateProject(event: any): void {\r\n this.currentProject = this.projects.find(x => x.id === event.value.id);\r\n localStorage.setItem('currentProject', this.currentProject.id.toString());\r\n }\r\n\r\n chosenYearHandler(\r\n normalizedYear: Moment,\r\n startDate: MatDatepicker,\r\n endDate: MatDatepicker\r\n ) {\r\n if (startDate != null) {\r\n this.selectedStartYear = normalizedYear.year();\r\n\r\n if (this.selectedEndYear < this.selectedStartYear) {\r\n this.selectedEndYear = this.selectedStartYear;\r\n }\r\n startDate.close();\r\n endDate.open();\r\n } else {\r\n this.selectedEndYear = normalizedYear.year();\r\n\r\n if (this.selectedEndYear < this.selectedStartYear) {\r\n this.selectedStartYear = this.selectedEndYear;\r\n }\r\n\r\n endDate.close();\r\n }\r\n }\r\n\r\n load(): void {\r\n this.isLoading = true;\r\n this.reportService\r\n .getYearsReportByCategories({\r\n startYear: this.selectedStartYear,\r\n endYear: this.selectedEndYear,\r\n projectId: this.currentProject.id,\r\n })\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n this.columns = data.columns;\r\n this.dataSource = data.rows;\r\n\r\n this.displayedColumns = this.columns.map(x => x.name);\r\n });\r\n }\r\n\r\n download(): void {\r\n this.isLoading = true;\r\n this.reportService\r\n .generateYearsReportByCategories({\r\n startYear: this.selectedStartYear,\r\n endYear: this.selectedEndYear,\r\n projectId: this.currentProject.id,\r\n })\r\n .pipe(\r\n finalize(() => (this.isLoading = false)),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(data => {\r\n window.open(data.url, '_blank');\r\n });\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./af\": 8685,\n\t\"./af.js\": 8685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 2614,\n\t\"./ar-kw.js\": 2614,\n\t\"./ar-ly\": 8630,\n\t\"./ar-ly.js\": 8630,\n\t\"./ar-ma\": 8674,\n\t\"./ar-ma.js\": 8674,\n\t\"./ar-sa\": 9032,\n\t\"./ar-sa.js\": 9032,\n\t\"./ar-tn\": 4730,\n\t\"./ar-tn.js\": 4730,\n\t\"./ar.js\": 254,\n\t\"./az\": 3052,\n\t\"./az.js\": 3052,\n\t\"./be\": 150,\n\t\"./be.js\": 150,\n\t\"./bg\": 3069,\n\t\"./bg.js\": 3069,\n\t\"./bm\": 3466,\n\t\"./bm.js\": 3466,\n\t\"./bn\": 8516,\n\t\"./bn-bd\": 557,\n\t\"./bn-bd.js\": 557,\n\t\"./bn.js\": 8516,\n\t\"./bo\": 6273,\n\t\"./bo.js\": 6273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 9815,\n\t\"./bs.js\": 9815,\n\t\"./ca\": 3331,\n\t\"./ca.js\": 3331,\n\t\"./cs\": 1320,\n\t\"./cs.js\": 1320,\n\t\"./cv\": 2219,\n\t\"./cv.js\": 2219,\n\t\"./cy\": 8266,\n\t\"./cy.js\": 8266,\n\t\"./da\": 6427,\n\t\"./da.js\": 6427,\n\t\"./de\": 7435,\n\t\"./de-at\": 2871,\n\t\"./de-at.js\": 2871,\n\t\"./de-ch\": 2994,\n\t\"./de-ch.js\": 2994,\n\t\"./de.js\": 7435,\n\t\"./dv\": 2357,\n\t\"./dv.js\": 2357,\n\t\"./el\": 5649,\n\t\"./el.js\": 5649,\n\t\"./en-au\": 9961,\n\t\"./en-au.js\": 9961,\n\t\"./en-ca\": 9878,\n\t\"./en-ca.js\": 9878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 864,\n\t\"./en-ie.js\": 864,\n\t\"./en-il\": 1579,\n\t\"./en-il.js\": 1579,\n\t\"./en-in\": 940,\n\t\"./en-in.js\": 940,\n\t\"./en-nz\": 6181,\n\t\"./en-nz.js\": 6181,\n\t\"./en-sg\": 4301,\n\t\"./en-sg.js\": 4301,\n\t\"./eo\": 5291,\n\t\"./eo.js\": 5291,\n\t\"./es\": 4529,\n\t\"./es-do\": 3764,\n\t\"./es-do.js\": 3764,\n\t\"./es-mx\": 2584,\n\t\"./es-mx.js\": 2584,\n\t\"./es-us\": 3425,\n\t\"./es-us.js\": 3425,\n\t\"./es.js\": 4529,\n\t\"./et\": 5203,\n\t\"./et.js\": 5203,\n\t\"./eu\": 678,\n\t\"./eu.js\": 678,\n\t\"./fa\": 3483,\n\t\"./fa.js\": 3483,\n\t\"./fi\": 6262,\n\t\"./fi.js\": 6262,\n\t\"./fil\": 2521,\n\t\"./fil.js\": 2521,\n\t\"./fo\": 4555,\n\t\"./fo.js\": 4555,\n\t\"./fr\": 3131,\n\t\"./fr-ca\": 8239,\n\t\"./fr-ca.js\": 8239,\n\t\"./fr-ch\": 1702,\n\t\"./fr-ch.js\": 1702,\n\t\"./fr.js\": 3131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 3821,\n\t\"./ga.js\": 3821,\n\t\"./gd\": 1753,\n\t\"./gd.js\": 1753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 2762,\n\t\"./gom-deva.js\": 2762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 2809,\n\t\"./gu.js\": 2809,\n\t\"./he\": 5402,\n\t\"./he.js\": 5402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 410,\n\t\"./hr.js\": 410,\n\t\"./hu\": 8288,\n\t\"./hu.js\": 8288,\n\t\"./hy-am\": 7928,\n\t\"./hy-am.js\": 7928,\n\t\"./id\": 1334,\n\t\"./id.js\": 1334,\n\t\"./is\": 6959,\n\t\"./is.js\": 6959,\n\t\"./it\": 4864,\n\t\"./it-ch\": 1124,\n\t\"./it-ch.js\": 1124,\n\t\"./it.js\": 4864,\n\t\"./ja\": 6141,\n\t\"./ja.js\": 6141,\n\t\"./jv\": 9187,\n\t\"./jv.js\": 9187,\n\t\"./ka\": 2136,\n\t\"./ka.js\": 2136,\n\t\"./kk\": 4332,\n\t\"./kk.js\": 4332,\n\t\"./km\": 8607,\n\t\"./km.js\": 8607,\n\t\"./kn\": 4305,\n\t\"./kn.js\": 4305,\n\t\"./ko\": 234,\n\t\"./ko.js\": 234,\n\t\"./ku\": 6003,\n\t\"./ku.js\": 6003,\n\t\"./ky\": 5061,\n\t\"./ky.js\": 5061,\n\t\"./lb\": 2786,\n\t\"./lb.js\": 2786,\n\t\"./lo\": 6183,\n\t\"./lo.js\": 6183,\n\t\"./lt\": 29,\n\t\"./lt.js\": 29,\n\t\"./lv\": 4169,\n\t\"./lv.js\": 4169,\n\t\"./me\": 8577,\n\t\"./me.js\": 8577,\n\t\"./mi\": 8177,\n\t\"./mi.js\": 8177,\n\t\"./mk\": 337,\n\t\"./mk.js\": 337,\n\t\"./ml\": 5260,\n\t\"./ml.js\": 5260,\n\t\"./mn\": 2325,\n\t\"./mn.js\": 2325,\n\t\"./mr\": 4695,\n\t\"./mr.js\": 4695,\n\t\"./ms\": 5334,\n\t\"./ms-my\": 7151,\n\t\"./ms-my.js\": 7151,\n\t\"./ms.js\": 5334,\n\t\"./mt\": 3570,\n\t\"./mt.js\": 3570,\n\t\"./my\": 7963,\n\t\"./my.js\": 7963,\n\t\"./nb\": 8028,\n\t\"./nb.js\": 8028,\n\t\"./ne\": 6638,\n\t\"./ne.js\": 6638,\n\t\"./nl\": 302,\n\t\"./nl-be\": 6782,\n\t\"./nl-be.js\": 6782,\n\t\"./nl.js\": 302,\n\t\"./nn\": 3501,\n\t\"./nn.js\": 3501,\n\t\"./oc-lnc\": 563,\n\t\"./oc-lnc.js\": 563,\n\t\"./pa-in\": 869,\n\t\"./pa-in.js\": 869,\n\t\"./pl\": 5302,\n\t\"./pl.js\": 5302,\n\t\"./pt\": 9687,\n\t\"./pt-br\": 4884,\n\t\"./pt-br.js\": 4884,\n\t\"./pt.js\": 9687,\n\t\"./ro\": 9107,\n\t\"./ro.js\": 9107,\n\t\"./ru\": 3627,\n\t\"./ru.js\": 3627,\n\t\"./sd\": 355,\n\t\"./sd.js\": 355,\n\t\"./se\": 3427,\n\t\"./se.js\": 3427,\n\t\"./si\": 1848,\n\t\"./si.js\": 1848,\n\t\"./sk\": 4590,\n\t\"./sk.js\": 4590,\n\t\"./sl\": 184,\n\t\"./sl.js\": 184,\n\t\"./sq\": 6361,\n\t\"./sq.js\": 6361,\n\t\"./sr\": 8965,\n\t\"./sr-cyrl\": 1287,\n\t\"./sr-cyrl.js\": 1287,\n\t\"./sr.js\": 8965,\n\t\"./ss\": 5456,\n\t\"./ss.js\": 5456,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 7558,\n\t\"./sw.js\": 7558,\n\t\"./ta\": 1356,\n\t\"./ta.js\": 1356,\n\t\"./te\": 3693,\n\t\"./te.js\": 3693,\n\t\"./tet\": 1243,\n\t\"./tet.js\": 1243,\n\t\"./tg\": 2500,\n\t\"./tg.js\": 2500,\n\t\"./th\": 5768,\n\t\"./th.js\": 5768,\n\t\"./tk\": 7761,\n\t\"./tk.js\": 7761,\n\t\"./tl-ph\": 5780,\n\t\"./tl-ph.js\": 5780,\n\t\"./tlh\": 9590,\n\t\"./tlh.js\": 9590,\n\t\"./tr\": 3807,\n\t\"./tr.js\": 3807,\n\t\"./tzl\": 3857,\n\t\"./tzl.js\": 3857,\n\t\"./tzm\": 654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 654,\n\t\"./ug-cn\": 845,\n\t\"./ug-cn.js\": 845,\n\t\"./uk\": 9232,\n\t\"./uk.js\": 9232,\n\t\"./ur\": 7052,\n\t\"./ur.js\": 7052,\n\t\"./uz\": 7967,\n\t\"./uz-latn\": 2233,\n\t\"./uz-latn.js\": 2233,\n\t\"./uz.js\": 7967,\n\t\"./vi\": 8615,\n\t\"./vi.js\": 8615,\n\t\"./x-pseudo\": 2320,\n\t\"./x-pseudo.js\": 2320,\n\t\"./yo\": 1313,\n\t\"./yo.js\": 1313,\n\t\"./zh-cn\": 4490,\n\t\"./zh-cn.js\": 4490,\n\t\"./zh-hk\": 5910,\n\t\"./zh-hk.js\": 5910,\n\t\"./zh-mo\": 8262,\n\t\"./zh-mo.js\": 8262,\n\t\"./zh-tw\": 4223,\n\t\"./zh-tw.js\": 4223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;","var map = {\n\t\"./en.json\": [\n\t\t502,\n\t\t\"src_assets_i18n_en_json\"\n\t],\n\t\"./he.json\": [\n\t\t3492,\n\t\t\"src_assets_i18n_he_json\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 6297;\nmodule.exports = webpackAsyncContext;"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[80]}