파트너 폴더 정리
This commit is contained in:
parent
581d94ae0e
commit
0090cc5c65
|
@ -178,48 +178,48 @@ export const appRoutes: Route[] = [
|
||||||
(m: any) => m.PartnerModule
|
(m: any) => m.PartnerModule
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
path: 'partner-mainoffice',
|
// path: 'partner-mainoffice',
|
||||||
loadChildren: () =>
|
// loadChildren: () =>
|
||||||
import(
|
// import(
|
||||||
'app/modules/admin/member/partner-mainoffice/partner-mainoffice.module'
|
// 'app/modules/admin/member/partner-mainoffice/partner-mainoffice.module'
|
||||||
).then((m: any) => m.PartnerMainofficeModule),
|
// ).then((m: any) => m.PartnerMainofficeModule),
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
path: 'partner-branch',
|
// path: 'partner-branch',
|
||||||
loadChildren: () =>
|
// loadChildren: () =>
|
||||||
import(
|
// import(
|
||||||
'app/modules/admin/member/partner-branch/partner-branch.module'
|
// 'app/modules/admin/member/partner-branch/partner-branch.module'
|
||||||
).then((m: any) => m.PartnerBranchModule),
|
// ).then((m: any) => m.PartnerBranchModule),
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
path: 'partner-division',
|
// path: 'partner-division',
|
||||||
loadChildren: () =>
|
// loadChildren: () =>
|
||||||
import(
|
// import(
|
||||||
'app/modules/admin/member/partner-division/partner-division.module'
|
// 'app/modules/admin/member/partner-division/partner-division.module'
|
||||||
).then((m: any) => m.PartnerDivisionModule),
|
// ).then((m: any) => m.PartnerDivisionModule),
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
path: 'partner-office',
|
// path: 'partner-office',
|
||||||
loadChildren: () =>
|
// loadChildren: () =>
|
||||||
import(
|
// import(
|
||||||
'app/modules/admin/member/partner-office/partner-office.module'
|
// 'app/modules/admin/member/partner-office/partner-office.module'
|
||||||
).then((m: any) => m.PartnerOfficeModule),
|
// ).then((m: any) => m.PartnerOfficeModule),
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
path: 'partner-store',
|
// path: 'partner-store',
|
||||||
loadChildren: () =>
|
// loadChildren: () =>
|
||||||
import(
|
// import(
|
||||||
'app/modules/admin/member/partner-store/partner-store.module'
|
// 'app/modules/admin/member/partner-store/partner-store.module'
|
||||||
).then((m: any) => m.PartnerStoreModule),
|
// ).then((m: any) => m.PartnerStoreModule),
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
path: 'partner-recommendation',
|
// path: 'partner-recommendation',
|
||||||
loadChildren: () =>
|
// loadChildren: () =>
|
||||||
import(
|
// import(
|
||||||
'app/modules/admin/member/partner-recommendation/partner-recommendation.module'
|
// 'app/modules/admin/member/partner-recommendation/partner-recommendation.module'
|
||||||
).then((m: any) => m.PartnerRecommendationModule),
|
// ).then((m: any) => m.PartnerRecommendationModule),
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
path: 'coupon',
|
path: 'coupon',
|
||||||
loadChildren: () =>
|
loadChildren: () =>
|
||||||
|
|
|
@ -68,54 +68,63 @@ export const defaultNavigation: FuseNavigationItem[] = [
|
||||||
link: '/member/current-user',
|
link: '/member/current-user',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'member.partner',
|
id: 'apps.ecommerce',
|
||||||
title: 'All Partner',
|
title: 'partner-management',
|
||||||
type: 'basic',
|
type: 'collapsable',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
icon: 'heroicons_outline:shopping-cart',
|
||||||
link: '/member/partner',
|
children: [
|
||||||
},
|
{
|
||||||
{
|
id: 'member.partner',
|
||||||
id: 'member.partner-mainoffice',
|
title: 'All Partner',
|
||||||
title: 'Partner Mainoffice',
|
type: 'basic',
|
||||||
type: 'basic',
|
icon: 'heroicons_outline:academic-cap',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
link: '/member/partner/all',
|
||||||
link: '/member/partner-mainoffice',
|
},
|
||||||
},
|
{
|
||||||
{
|
id: 'member.partner-mainoffice',
|
||||||
id: 'member.partner-branch',
|
title: 'Partner Mainoffice',
|
||||||
title: 'Partner Branch',
|
type: 'basic',
|
||||||
type: 'basic',
|
icon: 'heroicons_outline:academic-cap',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
link: '/member/partner/main-office',
|
||||||
link: '/member/partner-branch',
|
},
|
||||||
},
|
{
|
||||||
{
|
id: 'member.partner-branch',
|
||||||
id: 'member.partner-division',
|
title: 'Partner Branch',
|
||||||
title: 'Partner Division',
|
type: 'basic',
|
||||||
type: 'basic',
|
icon: 'heroicons_outline:academic-cap',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
link: '/member/partner/branch',
|
||||||
link: '/member/partner-division',
|
},
|
||||||
},
|
{
|
||||||
{
|
id: 'member.partner-division',
|
||||||
id: 'member.partner-office',
|
title: 'Partner Division',
|
||||||
title: 'Partner Office',
|
type: 'basic',
|
||||||
type: 'basic',
|
icon: 'heroicons_outline:academic-cap',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
link: '/member/partner/division',
|
||||||
link: '/member/partner-office',
|
},
|
||||||
},
|
{
|
||||||
{
|
id: 'member.partner-office',
|
||||||
id: 'member.partner-store',
|
title: 'Partner Office',
|
||||||
title: 'Partner Store',
|
type: 'basic',
|
||||||
type: 'basic',
|
icon: 'heroicons_outline:academic-cap',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
link: '/member/partner/office',
|
||||||
link: '/member/partner-store',
|
},
|
||||||
},
|
{
|
||||||
{
|
id: 'member.partner-store',
|
||||||
id: 'member.partner-recommendation',
|
title: 'Partner Store',
|
||||||
title: 'Partner Recommendation',
|
type: 'basic',
|
||||||
type: 'basic',
|
icon: 'heroicons_outline:academic-cap',
|
||||||
icon: 'heroicons_outline:academic-cap',
|
link: '/member/partner/store',
|
||||||
link: '/member/partner-recommendation',
|
},
|
||||||
|
{
|
||||||
|
id: 'member.partner-recommendation',
|
||||||
|
title: 'Partner Recommendation',
|
||||||
|
type: 'basic',
|
||||||
|
icon: 'heroicons_outline:academic-cap',
|
||||||
|
link: '/member/partner/recommendation',
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
id: 'member.coupon',
|
id: 'member.coupon',
|
||||||
title: 'Coupon',
|
title: 'Coupon',
|
||||||
|
|
123
src/app/modules/admin/member/compose/compose.component.html
Normal file
123
src/app/modules/admin/member/compose/compose.component.html
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
<div class="flex flex-col max-w-240 md:min-w-160 max-h-screen -m-6">
|
||||||
|
<!-- Header -->
|
||||||
|
<div
|
||||||
|
class="flex flex-0 items-center justify-between h-16 pr-3 sm:pr-5 pl-6 sm:pl-8 bg-primary text-on-primary"
|
||||||
|
>
|
||||||
|
<div class="text-lg font-medium">New Message</div>
|
||||||
|
<button mat-icon-button (click)="saveAndClose()" [tabIndex]="-1">
|
||||||
|
<mat-icon
|
||||||
|
class="text-current"
|
||||||
|
[svgIcon]="'heroicons_outline:x'"
|
||||||
|
></mat-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Compose form -->
|
||||||
|
<form
|
||||||
|
class="flex flex-col flex-auto p-6 sm:p-8 overflow-y-auto"
|
||||||
|
[formGroup]="composeForm"
|
||||||
|
>
|
||||||
|
<!-- To -->
|
||||||
|
<mat-form-field>
|
||||||
|
<mat-label>To</mat-label>
|
||||||
|
<input matInput [formControlName]="'to'" />
|
||||||
|
<div class="copy-fields-toggles" matSuffix>
|
||||||
|
<span
|
||||||
|
class="text-sm font-medium cursor-pointer select-none hover:underline"
|
||||||
|
*ngIf="!copyFields.cc"
|
||||||
|
(click)="showCopyField('cc')"
|
||||||
|
>
|
||||||
|
Cc
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
class="ml-2 text-sm font-medium cursor-pointer select-none hover:underline"
|
||||||
|
*ngIf="!copyFields.bcc"
|
||||||
|
(click)="showCopyField('bcc')"
|
||||||
|
>
|
||||||
|
Bcc
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<!-- Cc -->
|
||||||
|
<mat-form-field *ngIf="copyFields.cc">
|
||||||
|
<mat-label>Cc</mat-label>
|
||||||
|
<input matInput [formControlName]="'cc'" />
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<!-- Bcc -->
|
||||||
|
<mat-form-field *ngIf="copyFields.bcc">
|
||||||
|
<mat-label>Bcc</mat-label>
|
||||||
|
<input matInput [formControlName]="'bcc'" />
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<!-- Subject -->
|
||||||
|
<mat-form-field>
|
||||||
|
<mat-label>Subject</mat-label>
|
||||||
|
<input matInput [formControlName]="'subject'" />
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<!-- Body -->
|
||||||
|
<quill-editor
|
||||||
|
class="mt-2"
|
||||||
|
[formControlName]="'body'"
|
||||||
|
[modules]="quillModules"
|
||||||
|
></quill-editor>
|
||||||
|
|
||||||
|
<!-- Actions -->
|
||||||
|
<div
|
||||||
|
class="flex flex-col sm:flex-row sm:items-center justify-between mt-4 sm:mt-6"
|
||||||
|
>
|
||||||
|
<div class="-ml-2">
|
||||||
|
<!-- Attach file -->
|
||||||
|
<button mat-icon-button>
|
||||||
|
<mat-icon
|
||||||
|
class="icon-size-5"
|
||||||
|
[svgIcon]="'heroicons_solid:paper-clip'"
|
||||||
|
></mat-icon>
|
||||||
|
</button>
|
||||||
|
<!-- Insert link -->
|
||||||
|
<button mat-icon-button>
|
||||||
|
<mat-icon
|
||||||
|
class="icon-size-5"
|
||||||
|
[svgIcon]="'heroicons_solid:link'"
|
||||||
|
></mat-icon>
|
||||||
|
</button>
|
||||||
|
<!-- Insert emoji -->
|
||||||
|
<button mat-icon-button>
|
||||||
|
<mat-icon
|
||||||
|
class="icon-size-5"
|
||||||
|
[svgIcon]="'heroicons_solid:emoji-happy'"
|
||||||
|
></mat-icon>
|
||||||
|
</button>
|
||||||
|
<!-- Insert image -->
|
||||||
|
<button mat-icon-button>
|
||||||
|
<mat-icon
|
||||||
|
class="icon-size-5"
|
||||||
|
[svgIcon]="'heroicons_solid:photograph'"
|
||||||
|
></mat-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-center mt-4 sm:mt-0">
|
||||||
|
<!-- Discard -->
|
||||||
|
<button class="ml-auto sm:ml-0" mat-stroked-button (click)="discard()">
|
||||||
|
Discard
|
||||||
|
</button>
|
||||||
|
<!-- Save as draft -->
|
||||||
|
<button class="sm:mx-3" mat-stroked-button (click)="saveAsDraft()">
|
||||||
|
<span>Save as draft</span>
|
||||||
|
</button>
|
||||||
|
<!-- Send -->
|
||||||
|
<button
|
||||||
|
class="order-first sm:order-last"
|
||||||
|
mat-flat-button
|
||||||
|
[color]="'primary'"
|
||||||
|
(click)="send()"
|
||||||
|
>
|
||||||
|
Send
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
100
src/app/modules/admin/member/compose/compose.component.ts
Normal file
100
src/app/modules/admin/member/compose/compose.component.ts
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
||||||
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
|
import { MatDialogRef } from '@angular/material/dialog';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'member-regist-compose',
|
||||||
|
templateUrl: './compose.component.html',
|
||||||
|
encapsulation: ViewEncapsulation.None,
|
||||||
|
})
|
||||||
|
export class RegistComposeComponent implements OnInit {
|
||||||
|
composeForm!: FormGroup;
|
||||||
|
copyFields: { cc: boolean; bcc: boolean } = {
|
||||||
|
cc: false,
|
||||||
|
bcc: false,
|
||||||
|
};
|
||||||
|
quillModules: any = {
|
||||||
|
toolbar: [
|
||||||
|
['bold', 'italic', 'underline'],
|
||||||
|
[{ align: [] }, { list: 'ordered' }, { list: 'bullet' }],
|
||||||
|
['clean'],
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
public matDialogRef: MatDialogRef<RegistComposeComponent>,
|
||||||
|
private _formBuilder: FormBuilder
|
||||||
|
) {}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
// @ Lifecycle hooks
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On init
|
||||||
|
*/
|
||||||
|
ngOnInit(): void {
|
||||||
|
// Create the form
|
||||||
|
this.composeForm = this._formBuilder.group({
|
||||||
|
partnerId: [{ value: 'kgon4', disabled: true }],
|
||||||
|
siteName: [''],
|
||||||
|
signinId: [''],
|
||||||
|
password: [''],
|
||||||
|
exchangePw: [''],
|
||||||
|
nickname: [''],
|
||||||
|
calculateType: [''],
|
||||||
|
phoneNumber: [''],
|
||||||
|
bankName: [''],
|
||||||
|
accountNumber: [''],
|
||||||
|
accountHolder: [''],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
// @ Public methods
|
||||||
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the copy field with the given field name
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
|
showCopyField(name: string): void {
|
||||||
|
// Return if the name is not one of the available names
|
||||||
|
if (name !== 'cc' && name !== 'bcc') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show the field
|
||||||
|
this.copyFields[name] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save and close
|
||||||
|
*/
|
||||||
|
saveAndClose(): void {
|
||||||
|
// Save the message as a draft
|
||||||
|
this.saveAsDraft();
|
||||||
|
|
||||||
|
// Close the dialog
|
||||||
|
this.matDialogRef.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Discard the message
|
||||||
|
*/
|
||||||
|
discard(): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the message as a draft
|
||||||
|
*/
|
||||||
|
saveAsDraft(): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the message
|
||||||
|
*/
|
||||||
|
send(): void {}
|
||||||
|
}
|
|
@ -1,3 +0,0 @@
|
||||||
import { ListComponent } from './list.component';
|
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
|
|
@ -1,8 +0,0 @@
|
||||||
export interface PartnerBranchPagination {
|
|
||||||
length: number;
|
|
||||||
size: number;
|
|
||||||
page: number;
|
|
||||||
lastPage: number;
|
|
||||||
startIndex: number;
|
|
||||||
endIndex: number;
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
export interface PartnerBranch {
|
|
||||||
id?: string;
|
|
||||||
totalPartnerCount?: number;
|
|
||||||
totalHoldingMoney?: number;
|
|
||||||
totalComp?: number;
|
|
||||||
total?: number;
|
|
||||||
branchCount?: number;
|
|
||||||
divisionCount?: number;
|
|
||||||
officeCount?: number;
|
|
||||||
storeCount?: number;
|
|
||||||
memberCount?: number;
|
|
||||||
nickname?: string;
|
|
||||||
accountHolder?: string;
|
|
||||||
phoneNumber?: string;
|
|
||||||
calculateType?: string;
|
|
||||||
ownCash?: number;
|
|
||||||
ownComp?: number;
|
|
||||||
ownCoupon?: number;
|
|
||||||
gameMoney?: number;
|
|
||||||
todayComp?: number;
|
|
||||||
totalDeposit?: number;
|
|
||||||
totalWithdraw?: number;
|
|
||||||
balance?: number;
|
|
||||||
registDate?: string;
|
|
||||||
finalSigninDate?: string;
|
|
||||||
ip?: string;
|
|
||||||
state?: string;
|
|
||||||
note?: string;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
||||||
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
||||||
import { MatRippleModule } from '@angular/material/core';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
|
||||||
|
|
||||||
import { SharedModule } from 'app/shared/shared.module';
|
|
||||||
|
|
||||||
import { COMPONENTS } from './components';
|
|
||||||
|
|
||||||
import { partnerBranchRoutes } from './partner-branch.routing';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [COMPONENTS],
|
|
||||||
imports: [
|
|
||||||
TranslocoModule,
|
|
||||||
SharedModule,
|
|
||||||
RouterModule.forChild(partnerBranchRoutes),
|
|
||||||
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatRippleModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatTooltipModule,
|
|
||||||
MatGridListModule,
|
|
||||||
MatSlideToggleModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
],
|
|
||||||
})
|
|
||||||
export class PartnerBranchModule {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { Route } from '@angular/router';
|
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
|
||||||
|
|
||||||
import { PartnerBranchsResolver } from './resolvers/partner-branch.resolver';
|
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerBranchRoutes: Route[] = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ListComponent,
|
|
||||||
resolve: {
|
|
||||||
partnerBranchs: PartnerBranchsResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: ViewComponent,
|
|
||||||
resolve: {
|
|
||||||
users: UserResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,89 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import {
|
|
||||||
ActivatedRouteSnapshot,
|
|
||||||
Resolve,
|
|
||||||
Router,
|
|
||||||
RouterStateSnapshot,
|
|
||||||
} from '@angular/router';
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerBranch } from '../models/partner-branch';
|
|
||||||
import { PartnerBranchPagination } from '../models/partner-branch-pagination';
|
|
||||||
import { PartnerBranchService } from '../services/partner-branch.service';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerBranchResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerBranchService: PartnerBranchService,
|
|
||||||
private _router: Router
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<PartnerBranch | undefined> {
|
|
||||||
return this._partnerBranchService
|
|
||||||
.getPartnerBranchById(route.paramMap.get('id'))
|
|
||||||
.pipe(
|
|
||||||
// Error here means the requested product is not available
|
|
||||||
catchError((error) => {
|
|
||||||
// Log the error
|
|
||||||
console.error(error);
|
|
||||||
|
|
||||||
// Get the parent url
|
|
||||||
const parentUrl = state.url.split('/').slice(0, -1).join('/');
|
|
||||||
|
|
||||||
// Navigate to there
|
|
||||||
this._router.navigateByUrl(parentUrl);
|
|
||||||
|
|
||||||
// Throw an error
|
|
||||||
return throwError(error);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerBranchsResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _partnerBranchService: PartnerBranchService) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerBranchPagination;
|
|
||||||
partnerBranchs: PartnerBranch[];
|
|
||||||
}> {
|
|
||||||
return this._partnerBranchService.getPartnerBranchs();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,161 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import {
|
|
||||||
BehaviorSubject,
|
|
||||||
filter,
|
|
||||||
map,
|
|
||||||
Observable,
|
|
||||||
of,
|
|
||||||
switchMap,
|
|
||||||
take,
|
|
||||||
tap,
|
|
||||||
throwError,
|
|
||||||
} from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerBranch } from '../models/partner-branch';
|
|
||||||
import { PartnerBranchPagination } from '../models/partner-branch-pagination';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerBranchService {
|
|
||||||
// Private
|
|
||||||
private __pagination = new BehaviorSubject<
|
|
||||||
PartnerBranchPagination | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerBranch = new BehaviorSubject<PartnerBranch | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
private __partnerBranchs = new BehaviorSubject<PartnerBranch[] | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _httpClient: HttpClient) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Accessors
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for pagination
|
|
||||||
*/
|
|
||||||
get pagination$(): Observable<PartnerBranchPagination | undefined> {
|
|
||||||
return this.__pagination.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerBranch
|
|
||||||
*/
|
|
||||||
get partnerBranch$(): Observable<PartnerBranch | undefined> {
|
|
||||||
return this.__partnerBranch.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerBranchs
|
|
||||||
*/
|
|
||||||
get partnerBranchs$(): Observable<PartnerBranch[] | undefined> {
|
|
||||||
return this.__partnerBranchs.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get partnerBranchs
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param page
|
|
||||||
* @param size
|
|
||||||
* @param sort
|
|
||||||
* @param order
|
|
||||||
* @param search
|
|
||||||
*/
|
|
||||||
getPartnerBranchs(
|
|
||||||
page: number = 0,
|
|
||||||
size: number = 10,
|
|
||||||
sort: string = 'name',
|
|
||||||
order: 'asc' | 'desc' | '' = 'asc',
|
|
||||||
search: string = ''
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerBranchPagination;
|
|
||||||
partnerBranchs: PartnerBranch[];
|
|
||||||
}> {
|
|
||||||
return this._httpClient
|
|
||||||
.get<{
|
|
||||||
pagination: PartnerBranchPagination;
|
|
||||||
partnerBranchs: PartnerBranch[];
|
|
||||||
}>('api/apps/member/partner-branch/partner-branchs', {
|
|
||||||
params: {
|
|
||||||
page: '' + page,
|
|
||||||
size: '' + size,
|
|
||||||
sort,
|
|
||||||
order,
|
|
||||||
search,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((response) => {
|
|
||||||
this.__pagination.next(response.pagination);
|
|
||||||
this.__partnerBranchs.next(response.partnerBranchs);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product by id
|
|
||||||
*/
|
|
||||||
getPartnerBranchById(id: string | null): Observable<PartnerBranch> {
|
|
||||||
return this.__partnerBranchs.pipe(
|
|
||||||
take(1),
|
|
||||||
map((partnerBranchs) => {
|
|
||||||
// Find the product
|
|
||||||
const partnerBranch =
|
|
||||||
partnerBranchs?.find((item) => item.id === id) || undefined;
|
|
||||||
|
|
||||||
// Update the product
|
|
||||||
this.__partnerBranch.next(partnerBranch);
|
|
||||||
|
|
||||||
// Return the product
|
|
||||||
return partnerBranch;
|
|
||||||
}),
|
|
||||||
switchMap((product) => {
|
|
||||||
if (!product) {
|
|
||||||
return throwError('Could not found product with id of ' + id + '!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return of(product);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create product
|
|
||||||
*/
|
|
||||||
createPartnerBranch(): Observable<PartnerBranch> {
|
|
||||||
return this.partnerBranchs$.pipe(
|
|
||||||
take(1),
|
|
||||||
switchMap((partnerBranchs) =>
|
|
||||||
this._httpClient
|
|
||||||
.post<PartnerBranch>('api/apps/member/partner-branch/product', {})
|
|
||||||
.pipe(
|
|
||||||
map((newPartnerBranch) => {
|
|
||||||
// Update the partnerBranchs with the new product
|
|
||||||
if (!!partnerBranchs) {
|
|
||||||
this.__partnerBranchs.next([
|
|
||||||
newPartnerBranch,
|
|
||||||
...partnerBranchs,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new product
|
|
||||||
return newPartnerBranch;
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
import { ListComponent } from './list.component';
|
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
|
|
@ -1,8 +0,0 @@
|
||||||
export interface PartnerDivisionPagination {
|
|
||||||
length: number;
|
|
||||||
size: number;
|
|
||||||
page: number;
|
|
||||||
lastPage: number;
|
|
||||||
startIndex: number;
|
|
||||||
endIndex: number;
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
export interface PartnerDivision {
|
|
||||||
id?: string;
|
|
||||||
totalPartnerCount?: number;
|
|
||||||
totalHoldingMoney?: number;
|
|
||||||
totalComp?: number;
|
|
||||||
total?: number;
|
|
||||||
branchCount?: number;
|
|
||||||
divisionCount?: number;
|
|
||||||
officeCount?: number;
|
|
||||||
storeCount?: number;
|
|
||||||
memberCount?: number;
|
|
||||||
nickname?: string;
|
|
||||||
accountHolder?: string;
|
|
||||||
phoneNumber?: string;
|
|
||||||
calculateType?: string;
|
|
||||||
ownCash?: number;
|
|
||||||
ownComp?: number;
|
|
||||||
ownCoupon?: number;
|
|
||||||
gameMoney?: number;
|
|
||||||
todayComp?: number;
|
|
||||||
totalDeposit?: number;
|
|
||||||
totalWithdraw?: number;
|
|
||||||
balance?: number;
|
|
||||||
registDate?: string;
|
|
||||||
finalSigninDate?: string;
|
|
||||||
ip?: string;
|
|
||||||
state?: string;
|
|
||||||
note?: string;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
||||||
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
||||||
import { MatRippleModule } from '@angular/material/core';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
|
||||||
|
|
||||||
import { SharedModule } from 'app/shared/shared.module';
|
|
||||||
|
|
||||||
import { COMPONENTS } from './components';
|
|
||||||
|
|
||||||
import { partnerDivisionRoutes } from './partner-division.routing';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [COMPONENTS],
|
|
||||||
imports: [
|
|
||||||
TranslocoModule,
|
|
||||||
SharedModule,
|
|
||||||
RouterModule.forChild(partnerDivisionRoutes),
|
|
||||||
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatRippleModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatTooltipModule,
|
|
||||||
MatGridListModule,
|
|
||||||
MatSlideToggleModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
],
|
|
||||||
})
|
|
||||||
export class PartnerDivisionModule {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { Route } from '@angular/router';
|
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
|
||||||
|
|
||||||
import { PartnerDivisionsResolver } from './resolvers/partner-division.resolver';
|
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerDivisionRoutes: Route[] = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ListComponent,
|
|
||||||
resolve: {
|
|
||||||
partnerBranchs: PartnerDivisionsResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: ViewComponent,
|
|
||||||
resolve: {
|
|
||||||
users: UserResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,89 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import {
|
|
||||||
ActivatedRouteSnapshot,
|
|
||||||
Resolve,
|
|
||||||
Router,
|
|
||||||
RouterStateSnapshot,
|
|
||||||
} from '@angular/router';
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerDivision } from '../models/partner-division';
|
|
||||||
import { PartnerDivisionPagination } from '../models/partner-division-pagination';
|
|
||||||
import { PartnerDivisionService } from '../services/partner-division.service';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerDivisionResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerDivisionService: PartnerDivisionService,
|
|
||||||
private _router: Router
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<PartnerDivision | undefined> {
|
|
||||||
return this._partnerDivisionService
|
|
||||||
.getPartnerDivisionById(route.paramMap.get('id'))
|
|
||||||
.pipe(
|
|
||||||
// Error here means the requested product is not available
|
|
||||||
catchError((error) => {
|
|
||||||
// Log the error
|
|
||||||
console.error(error);
|
|
||||||
|
|
||||||
// Get the parent url
|
|
||||||
const parentUrl = state.url.split('/').slice(0, -1).join('/');
|
|
||||||
|
|
||||||
// Navigate to there
|
|
||||||
this._router.navigateByUrl(parentUrl);
|
|
||||||
|
|
||||||
// Throw an error
|
|
||||||
return throwError(error);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerDivisionsResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _partnerDivisionService: PartnerDivisionService) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerDivisionPagination;
|
|
||||||
partnerDivisions: PartnerDivision[];
|
|
||||||
}> {
|
|
||||||
return this._partnerDivisionService.getPartnerDivisions();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,161 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import {
|
|
||||||
BehaviorSubject,
|
|
||||||
filter,
|
|
||||||
map,
|
|
||||||
Observable,
|
|
||||||
of,
|
|
||||||
switchMap,
|
|
||||||
take,
|
|
||||||
tap,
|
|
||||||
throwError,
|
|
||||||
} from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerDivision } from '../models/partner-division';
|
|
||||||
import { PartnerDivisionPagination } from '../models/partner-division-pagination';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerDivisionService {
|
|
||||||
// Private
|
|
||||||
private __pagination = new BehaviorSubject<
|
|
||||||
PartnerDivisionPagination | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerDivision = new BehaviorSubject<PartnerDivision | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
private __partnerDivisions = new BehaviorSubject<
|
|
||||||
PartnerDivision[] | undefined
|
|
||||||
>(undefined);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _httpClient: HttpClient) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Accessors
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for pagination
|
|
||||||
*/
|
|
||||||
get pagination$(): Observable<PartnerDivisionPagination | undefined> {
|
|
||||||
return this.__pagination.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerDivision
|
|
||||||
*/
|
|
||||||
get partnerDivision$(): Observable<PartnerDivision | undefined> {
|
|
||||||
return this.__partnerDivision.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerDivisions
|
|
||||||
*/
|
|
||||||
get partnerDivisions$(): Observable<PartnerDivision[] | undefined> {
|
|
||||||
return this.__partnerDivisions.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get partnerDivisions
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param page
|
|
||||||
* @param size
|
|
||||||
* @param sort
|
|
||||||
* @param order
|
|
||||||
* @param search
|
|
||||||
*/
|
|
||||||
getPartnerDivisions(
|
|
||||||
page: number = 0,
|
|
||||||
size: number = 10,
|
|
||||||
sort: string = 'name',
|
|
||||||
order: 'asc' | 'desc' | '' = 'asc',
|
|
||||||
search: string = ''
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerDivisionPagination;
|
|
||||||
partnerDivisions: PartnerDivision[];
|
|
||||||
}> {
|
|
||||||
return this._httpClient
|
|
||||||
.get<{
|
|
||||||
pagination: PartnerDivisionPagination;
|
|
||||||
partnerDivisions: PartnerDivision[];
|
|
||||||
}>('api/apps/member/partner-division/partner-divisions', {
|
|
||||||
params: {
|
|
||||||
page: '' + page,
|
|
||||||
size: '' + size,
|
|
||||||
sort,
|
|
||||||
order,
|
|
||||||
search,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((response) => {
|
|
||||||
this.__pagination.next(response.pagination);
|
|
||||||
this.__partnerDivisions.next(response.partnerDivisions);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product by id
|
|
||||||
*/
|
|
||||||
getPartnerDivisionById(id: string | null): Observable<PartnerDivision> {
|
|
||||||
return this.__partnerDivisions.pipe(
|
|
||||||
take(1),
|
|
||||||
map((partnerDivisions) => {
|
|
||||||
// Find the product
|
|
||||||
const partnerDivision =
|
|
||||||
partnerDivisions?.find((item) => item.id === id) || undefined;
|
|
||||||
|
|
||||||
// Update the product
|
|
||||||
this.__partnerDivision.next(partnerDivision);
|
|
||||||
|
|
||||||
// Return the product
|
|
||||||
return partnerDivision;
|
|
||||||
}),
|
|
||||||
switchMap((product) => {
|
|
||||||
if (!product) {
|
|
||||||
return throwError('Could not found product with id of ' + id + '!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return of(product);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create product
|
|
||||||
*/
|
|
||||||
createPartnerDivision(): Observable<PartnerDivision> {
|
|
||||||
return this.partnerDivisions$.pipe(
|
|
||||||
take(1),
|
|
||||||
switchMap((partnerDivisions) =>
|
|
||||||
this._httpClient
|
|
||||||
.post<PartnerDivision>('api/apps/member/partner-division/product', {})
|
|
||||||
.pipe(
|
|
||||||
map((newPartnerDivision) => {
|
|
||||||
// Update the partnerDivisions with the new product
|
|
||||||
if (!!partnerDivisions) {
|
|
||||||
this.__partnerDivisions.next([
|
|
||||||
newPartnerDivision,
|
|
||||||
...partnerDivisions,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new product
|
|
||||||
return newPartnerDivision;
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
import { ListComponent } from './list.component';
|
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
|
|
@ -1,8 +0,0 @@
|
||||||
export interface PartnerMainofficePagination {
|
|
||||||
length: number;
|
|
||||||
size: number;
|
|
||||||
page: number;
|
|
||||||
lastPage: number;
|
|
||||||
startIndex: number;
|
|
||||||
endIndex: number;
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
export interface PartnerMainoffice {
|
|
||||||
id?: string;
|
|
||||||
totalPartnerCount?: number;
|
|
||||||
totalHoldingMoney?: number;
|
|
||||||
totalComp?: number;
|
|
||||||
total?: number;
|
|
||||||
branchCount?: number;
|
|
||||||
divisionCount?: number;
|
|
||||||
officeCount?: number;
|
|
||||||
storeCount?: number;
|
|
||||||
memberCount?: number;
|
|
||||||
nickname?: string;
|
|
||||||
accountHolder?: string;
|
|
||||||
phoneNumber?: string;
|
|
||||||
calculateType?: string;
|
|
||||||
ownCash?: number;
|
|
||||||
ownComp?: number;
|
|
||||||
ownCoupon?: number;
|
|
||||||
gameMoney?: number;
|
|
||||||
todayComp?: number;
|
|
||||||
totalDeposit?: number;
|
|
||||||
totalWithdraw?: number;
|
|
||||||
balance?: number;
|
|
||||||
registDate?: string;
|
|
||||||
finalSigninDate?: string;
|
|
||||||
ip?: string;
|
|
||||||
state?: string;
|
|
||||||
note?: string;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
||||||
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
||||||
import { MatRippleModule } from '@angular/material/core';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
|
||||||
|
|
||||||
import { SharedModule } from 'app/shared/shared.module';
|
|
||||||
|
|
||||||
import { COMPONENTS } from './components';
|
|
||||||
|
|
||||||
import { partnerMainofficeRoutes } from './partner-mainoffice.routing';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [COMPONENTS],
|
|
||||||
imports: [
|
|
||||||
TranslocoModule,
|
|
||||||
SharedModule,
|
|
||||||
RouterModule.forChild(partnerMainofficeRoutes),
|
|
||||||
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatRippleModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatTooltipModule,
|
|
||||||
MatGridListModule,
|
|
||||||
MatSlideToggleModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
],
|
|
||||||
})
|
|
||||||
export class PartnerMainofficeModule {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { Route } from '@angular/router';
|
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
|
||||||
|
|
||||||
import { PartnerMainofficesResolver } from './resolvers/partner-mainoffice.resolver';
|
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerMainofficeRoutes: Route[] = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ListComponent,
|
|
||||||
resolve: {
|
|
||||||
partnerMainoffices: PartnerMainofficesResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: ViewComponent,
|
|
||||||
resolve: {
|
|
||||||
users: UserResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,89 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import {
|
|
||||||
ActivatedRouteSnapshot,
|
|
||||||
Resolve,
|
|
||||||
Router,
|
|
||||||
RouterStateSnapshot,
|
|
||||||
} from '@angular/router';
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerMainoffice } from '../models/partner-mainoffice';
|
|
||||||
import { PartnerMainofficePagination } from '../models/partner-mainoffice-pagination';
|
|
||||||
import { PartnerMainofficeService } from '../services/partner-mainoffice.service';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerMainofficeResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerMainofficeService: PartnerMainofficeService,
|
|
||||||
private _router: Router
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<PartnerMainoffice | undefined> {
|
|
||||||
return this._partnerMainofficeService
|
|
||||||
.getPartnerMainofficeById(route.paramMap.get('id'))
|
|
||||||
.pipe(
|
|
||||||
// Error here means the requested product is not available
|
|
||||||
catchError((error) => {
|
|
||||||
// Log the error
|
|
||||||
console.error(error);
|
|
||||||
|
|
||||||
// Get the parent url
|
|
||||||
const parentUrl = state.url.split('/').slice(0, -1).join('/');
|
|
||||||
|
|
||||||
// Navigate to there
|
|
||||||
this._router.navigateByUrl(parentUrl);
|
|
||||||
|
|
||||||
// Throw an error
|
|
||||||
return throwError(error);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerMainofficesResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _partnerMainofficeService: PartnerMainofficeService) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerMainofficePagination;
|
|
||||||
partnerMainoffices: PartnerMainoffice[];
|
|
||||||
}> {
|
|
||||||
return this._partnerMainofficeService.getPartnerMainoffices();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,164 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import {
|
|
||||||
BehaviorSubject,
|
|
||||||
filter,
|
|
||||||
map,
|
|
||||||
Observable,
|
|
||||||
of,
|
|
||||||
switchMap,
|
|
||||||
take,
|
|
||||||
tap,
|
|
||||||
throwError,
|
|
||||||
} from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerMainoffice } from '../models/partner-mainoffice';
|
|
||||||
import { PartnerMainofficePagination } from '../models/partner-mainoffice-pagination';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerMainofficeService {
|
|
||||||
// Private
|
|
||||||
private __pagination = new BehaviorSubject<
|
|
||||||
PartnerMainofficePagination | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerMainoffice = new BehaviorSubject<
|
|
||||||
PartnerMainoffice | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerMainoffices = new BehaviorSubject<
|
|
||||||
PartnerMainoffice[] | undefined
|
|
||||||
>(undefined);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _httpClient: HttpClient) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Accessors
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for pagination
|
|
||||||
*/
|
|
||||||
get pagination$(): Observable<PartnerMainofficePagination | undefined> {
|
|
||||||
return this.__pagination.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerMainoffice
|
|
||||||
*/
|
|
||||||
get partnerMainoffice$(): Observable<PartnerMainoffice | undefined> {
|
|
||||||
return this.__partnerMainoffice.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerMainoffices
|
|
||||||
*/
|
|
||||||
get partnerMainoffices$(): Observable<PartnerMainoffice[] | undefined> {
|
|
||||||
return this.__partnerMainoffices.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get partnerMainoffices
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param page
|
|
||||||
* @param size
|
|
||||||
* @param sort
|
|
||||||
* @param order
|
|
||||||
* @param search
|
|
||||||
*/
|
|
||||||
getPartnerMainoffices(
|
|
||||||
page: number = 0,
|
|
||||||
size: number = 10,
|
|
||||||
sort: string = 'name',
|
|
||||||
order: 'asc' | 'desc' | '' = 'asc',
|
|
||||||
search: string = ''
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerMainofficePagination;
|
|
||||||
partnerMainoffices: PartnerMainoffice[];
|
|
||||||
}> {
|
|
||||||
return this._httpClient
|
|
||||||
.get<{
|
|
||||||
pagination: PartnerMainofficePagination;
|
|
||||||
partnerMainoffices: PartnerMainoffice[];
|
|
||||||
}>('api/apps/member/partner-mainoffice/partner-mainoffices', {
|
|
||||||
params: {
|
|
||||||
page: '' + page,
|
|
||||||
size: '' + size,
|
|
||||||
sort,
|
|
||||||
order,
|
|
||||||
search,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((response) => {
|
|
||||||
this.__pagination.next(response.pagination);
|
|
||||||
this.__partnerMainoffices.next(response.partnerMainoffices);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product by id
|
|
||||||
*/
|
|
||||||
getPartnerMainofficeById(id: string | null): Observable<PartnerMainoffice> {
|
|
||||||
return this.__partnerMainoffices.pipe(
|
|
||||||
take(1),
|
|
||||||
map((partnerMainoffices) => {
|
|
||||||
// Find the product
|
|
||||||
const partnerMainoffice =
|
|
||||||
partnerMainoffices?.find((item) => item.id === id) || undefined;
|
|
||||||
|
|
||||||
// Update the product
|
|
||||||
this.__partnerMainoffice.next(partnerMainoffice);
|
|
||||||
|
|
||||||
// Return the product
|
|
||||||
return partnerMainoffice;
|
|
||||||
}),
|
|
||||||
switchMap((product) => {
|
|
||||||
if (!product) {
|
|
||||||
return throwError('Could not found product with id of ' + id + '!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return of(product);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create product
|
|
||||||
*/
|
|
||||||
createPartnerMainoffice(): Observable<PartnerMainoffice> {
|
|
||||||
return this.partnerMainoffices$.pipe(
|
|
||||||
take(1),
|
|
||||||
switchMap((partnerMainoffices) =>
|
|
||||||
this._httpClient
|
|
||||||
.post<PartnerMainoffice>(
|
|
||||||
'api/apps/member/partner-mainoffice/product',
|
|
||||||
{}
|
|
||||||
)
|
|
||||||
.pipe(
|
|
||||||
map((newPartnerMainoffice) => {
|
|
||||||
// Update the partnerMainoffices with the new product
|
|
||||||
if (!!partnerMainoffices) {
|
|
||||||
this.__partnerMainoffices.next([
|
|
||||||
newPartnerMainoffice,
|
|
||||||
...partnerMainoffices,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new product
|
|
||||||
return newPartnerMainoffice;
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
import { ListComponent } from './list.component';
|
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
|
|
@ -1,8 +0,0 @@
|
||||||
export interface PartnerOfficePagination {
|
|
||||||
length: number;
|
|
||||||
size: number;
|
|
||||||
page: number;
|
|
||||||
lastPage: number;
|
|
||||||
startIndex: number;
|
|
||||||
endIndex: number;
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
export interface PartnerOffice {
|
|
||||||
id?: string;
|
|
||||||
totalPartnerCount?: number;
|
|
||||||
totalHoldingMoney?: number;
|
|
||||||
totalComp?: number;
|
|
||||||
total?: number;
|
|
||||||
branchCount?: number;
|
|
||||||
divisionCount?: number;
|
|
||||||
officeCount?: number;
|
|
||||||
storeCount?: number;
|
|
||||||
memberCount?: number;
|
|
||||||
nickname?: string;
|
|
||||||
accountHolder?: string;
|
|
||||||
phoneNumber?: string;
|
|
||||||
calculateType?: string;
|
|
||||||
ownCash?: number;
|
|
||||||
ownComp?: number;
|
|
||||||
ownCoupon?: number;
|
|
||||||
gameMoney?: number;
|
|
||||||
todayComp?: number;
|
|
||||||
totalDeposit?: number;
|
|
||||||
totalWithdraw?: number;
|
|
||||||
balance?: number;
|
|
||||||
registDate?: string;
|
|
||||||
finalSigninDate?: string;
|
|
||||||
ip?: string;
|
|
||||||
state?: string;
|
|
||||||
note?: string;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
||||||
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
||||||
import { MatRippleModule } from '@angular/material/core';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
|
||||||
|
|
||||||
import { SharedModule } from 'app/shared/shared.module';
|
|
||||||
|
|
||||||
import { COMPONENTS } from './components';
|
|
||||||
|
|
||||||
import { partnerOfficeRoutes } from './partner-office.routing';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [COMPONENTS],
|
|
||||||
imports: [
|
|
||||||
TranslocoModule,
|
|
||||||
SharedModule,
|
|
||||||
RouterModule.forChild(partnerOfficeRoutes),
|
|
||||||
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatRippleModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatTooltipModule,
|
|
||||||
MatGridListModule,
|
|
||||||
MatSlideToggleModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
],
|
|
||||||
})
|
|
||||||
export class PartnerOfficeModule {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { Route } from '@angular/router';
|
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
|
||||||
|
|
||||||
import { PartnerOfficesResolver } from './resolvers/partner-office.resolver';
|
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerOfficeRoutes: Route[] = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ListComponent,
|
|
||||||
resolve: {
|
|
||||||
partnerOffices: PartnerOfficesResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: ViewComponent,
|
|
||||||
resolve: {
|
|
||||||
users: UserResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,89 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import {
|
|
||||||
ActivatedRouteSnapshot,
|
|
||||||
Resolve,
|
|
||||||
Router,
|
|
||||||
RouterStateSnapshot,
|
|
||||||
} from '@angular/router';
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerOffice } from '../models/partner-office';
|
|
||||||
import { PartnerOfficePagination } from '../models/partner-office-pagination';
|
|
||||||
import { PartnerOfficeService } from '../services/partner-office.service';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerOfficeResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerOfficeService: PartnerOfficeService,
|
|
||||||
private _router: Router
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<PartnerOffice | undefined> {
|
|
||||||
return this._partnerOfficeService
|
|
||||||
.getPartnerOfficeById(route.paramMap.get('id'))
|
|
||||||
.pipe(
|
|
||||||
// Error here means the requested product is not available
|
|
||||||
catchError((error) => {
|
|
||||||
// Log the error
|
|
||||||
console.error(error);
|
|
||||||
|
|
||||||
// Get the parent url
|
|
||||||
const parentUrl = state.url.split('/').slice(0, -1).join('/');
|
|
||||||
|
|
||||||
// Navigate to there
|
|
||||||
this._router.navigateByUrl(parentUrl);
|
|
||||||
|
|
||||||
// Throw an error
|
|
||||||
return throwError(error);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerOfficesResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _partnerOfficeService: PartnerOfficeService) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerOfficePagination;
|
|
||||||
partnerOffices: PartnerOffice[];
|
|
||||||
}> {
|
|
||||||
return this._partnerOfficeService.getPartnerOffices();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,161 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import {
|
|
||||||
BehaviorSubject,
|
|
||||||
filter,
|
|
||||||
map,
|
|
||||||
Observable,
|
|
||||||
of,
|
|
||||||
switchMap,
|
|
||||||
take,
|
|
||||||
tap,
|
|
||||||
throwError,
|
|
||||||
} from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerOffice } from '../models/partner-office';
|
|
||||||
import { PartnerOfficePagination } from '../models/partner-office-pagination';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerOfficeService {
|
|
||||||
// Private
|
|
||||||
private __pagination = new BehaviorSubject<
|
|
||||||
PartnerOfficePagination | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerOffice = new BehaviorSubject<PartnerOffice | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
private __partnerOffices = new BehaviorSubject<PartnerOffice[] | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _httpClient: HttpClient) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Accessors
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for pagination
|
|
||||||
*/
|
|
||||||
get pagination$(): Observable<PartnerOfficePagination | undefined> {
|
|
||||||
return this.__pagination.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerOffice
|
|
||||||
*/
|
|
||||||
get partnerOffice$(): Observable<PartnerOffice | undefined> {
|
|
||||||
return this.__partnerOffice.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerOffices
|
|
||||||
*/
|
|
||||||
get partnerOffices$(): Observable<PartnerOffice[] | undefined> {
|
|
||||||
return this.__partnerOffices.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get partnerOffices
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param page
|
|
||||||
* @param size
|
|
||||||
* @param sort
|
|
||||||
* @param order
|
|
||||||
* @param search
|
|
||||||
*/
|
|
||||||
getPartnerOffices(
|
|
||||||
page: number = 0,
|
|
||||||
size: number = 10,
|
|
||||||
sort: string = 'name',
|
|
||||||
order: 'asc' | 'desc' | '' = 'asc',
|
|
||||||
search: string = ''
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerOfficePagination;
|
|
||||||
partnerOffices: PartnerOffice[];
|
|
||||||
}> {
|
|
||||||
return this._httpClient
|
|
||||||
.get<{
|
|
||||||
pagination: PartnerOfficePagination;
|
|
||||||
partnerOffices: PartnerOffice[];
|
|
||||||
}>('api/apps/member/partner-office/partner-offices', {
|
|
||||||
params: {
|
|
||||||
page: '' + page,
|
|
||||||
size: '' + size,
|
|
||||||
sort,
|
|
||||||
order,
|
|
||||||
search,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((response) => {
|
|
||||||
this.__pagination.next(response.pagination);
|
|
||||||
this.__partnerOffices.next(response.partnerOffices);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product by id
|
|
||||||
*/
|
|
||||||
getPartnerOfficeById(id: string | null): Observable<PartnerOffice> {
|
|
||||||
return this.__partnerOffices.pipe(
|
|
||||||
take(1),
|
|
||||||
map((partnerOffices) => {
|
|
||||||
// Find the product
|
|
||||||
const partnerOffice =
|
|
||||||
partnerOffices?.find((item) => item.id === id) || undefined;
|
|
||||||
|
|
||||||
// Update the product
|
|
||||||
this.__partnerOffice.next(partnerOffice);
|
|
||||||
|
|
||||||
// Return the product
|
|
||||||
return partnerOffice;
|
|
||||||
}),
|
|
||||||
switchMap((product) => {
|
|
||||||
if (!product) {
|
|
||||||
return throwError('Could not found product with id of ' + id + '!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return of(product);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create product
|
|
||||||
*/
|
|
||||||
createPartnerOffice(): Observable<PartnerOffice> {
|
|
||||||
return this.partnerOffices$.pipe(
|
|
||||||
take(1),
|
|
||||||
switchMap((partnerOffices) =>
|
|
||||||
this._httpClient
|
|
||||||
.post<PartnerOffice>('api/apps/member/partner-office/product', {})
|
|
||||||
.pipe(
|
|
||||||
map((newPartnerOffice) => {
|
|
||||||
// Update the partnerOffices with the new product
|
|
||||||
if (!!partnerOffices) {
|
|
||||||
this.__partnerOffices.next([
|
|
||||||
newPartnerOffice,
|
|
||||||
...partnerOffices,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new product
|
|
||||||
return newPartnerOffice;
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
import { ListComponent } from './list.component';
|
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
|
|
@ -1,8 +0,0 @@
|
||||||
export interface PartnerRecommendationPagination {
|
|
||||||
length: number;
|
|
||||||
size: number;
|
|
||||||
page: number;
|
|
||||||
lastPage: number;
|
|
||||||
startIndex: number;
|
|
||||||
endIndex: number;
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
export interface PartnerRecommendation {
|
|
||||||
id?: string;
|
|
||||||
totalPartnerCount?: number;
|
|
||||||
totalHoldingMoney?: number;
|
|
||||||
totalComp?: number;
|
|
||||||
total?: number;
|
|
||||||
branchCount?: number;
|
|
||||||
divisionCount?: number;
|
|
||||||
officeCount?: number;
|
|
||||||
storeCount?: number;
|
|
||||||
memberCount?: number;
|
|
||||||
nickname?: string;
|
|
||||||
accountHolder?: string;
|
|
||||||
phoneNumber?: string;
|
|
||||||
calculateType?: string;
|
|
||||||
ownCash?: number;
|
|
||||||
ownComp?: number;
|
|
||||||
ownCoupon?: number;
|
|
||||||
gameMoney?: number;
|
|
||||||
todayComp?: number;
|
|
||||||
totalDeposit?: number;
|
|
||||||
totalWithdraw?: number;
|
|
||||||
balance?: number;
|
|
||||||
registDate?: string;
|
|
||||||
finalSigninDate?: string;
|
|
||||||
ip?: string;
|
|
||||||
state?: string;
|
|
||||||
note?: string;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
||||||
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
||||||
import { MatRippleModule } from '@angular/material/core';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
|
||||||
|
|
||||||
import { SharedModule } from 'app/shared/shared.module';
|
|
||||||
|
|
||||||
import { COMPONENTS } from './components';
|
|
||||||
|
|
||||||
import { partnerRecommendationRoutes } from './partner-recommendation.routing';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [COMPONENTS],
|
|
||||||
imports: [
|
|
||||||
TranslocoModule,
|
|
||||||
SharedModule,
|
|
||||||
RouterModule.forChild(partnerRecommendationRoutes),
|
|
||||||
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatRippleModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatTooltipModule,
|
|
||||||
MatGridListModule,
|
|
||||||
MatSlideToggleModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
],
|
|
||||||
})
|
|
||||||
export class PartnerRecommendationModule {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { Route } from '@angular/router';
|
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
|
||||||
|
|
||||||
import { PartnerRecommendationsResolver } from './resolvers/partner-recommendation.resolver';
|
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerRecommendationRoutes: Route[] = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ListComponent,
|
|
||||||
resolve: {
|
|
||||||
partnerRecommendations: PartnerRecommendationsResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: ViewComponent,
|
|
||||||
resolve: {
|
|
||||||
users: UserResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,91 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import {
|
|
||||||
ActivatedRouteSnapshot,
|
|
||||||
Resolve,
|
|
||||||
Router,
|
|
||||||
RouterStateSnapshot,
|
|
||||||
} from '@angular/router';
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerRecommendation } from '../models/partner-recommendation';
|
|
||||||
import { PartnerRecommendationPagination } from '../models/partner-recommendation-pagination';
|
|
||||||
import { PartnerRecommendationService } from '../services/partner-recommendation.service';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerRecommendationResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerRecommendationService: PartnerRecommendationService,
|
|
||||||
private _router: Router
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<PartnerRecommendation | undefined> {
|
|
||||||
return this._partnerRecommendationService
|
|
||||||
.getPartnerRecommendationById(route.paramMap.get('id'))
|
|
||||||
.pipe(
|
|
||||||
// Error here means the requested product is not available
|
|
||||||
catchError((error) => {
|
|
||||||
// Log the error
|
|
||||||
console.error(error);
|
|
||||||
|
|
||||||
// Get the parent url
|
|
||||||
const parentUrl = state.url.split('/').slice(0, -1).join('/');
|
|
||||||
|
|
||||||
// Navigate to there
|
|
||||||
this._router.navigateByUrl(parentUrl);
|
|
||||||
|
|
||||||
// Throw an error
|
|
||||||
return throwError(error);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerRecommendationsResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerRecommendationService: PartnerRecommendationService
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerRecommendationPagination;
|
|
||||||
partnerRecommendations: PartnerRecommendation[];
|
|
||||||
}> {
|
|
||||||
return this._partnerRecommendationService.getPartnerRecommendations();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,168 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import {
|
|
||||||
BehaviorSubject,
|
|
||||||
filter,
|
|
||||||
map,
|
|
||||||
Observable,
|
|
||||||
of,
|
|
||||||
switchMap,
|
|
||||||
take,
|
|
||||||
tap,
|
|
||||||
throwError,
|
|
||||||
} from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerRecommendation } from '../models/partner-recommendation';
|
|
||||||
import { PartnerRecommendationPagination } from '../models/partner-recommendation-pagination';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerRecommendationService {
|
|
||||||
// Private
|
|
||||||
private __pagination = new BehaviorSubject<
|
|
||||||
PartnerRecommendationPagination | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerRecommendation = new BehaviorSubject<
|
|
||||||
PartnerRecommendation | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerRecommendations = new BehaviorSubject<
|
|
||||||
PartnerRecommendation[] | undefined
|
|
||||||
>(undefined);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _httpClient: HttpClient) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Accessors
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for pagination
|
|
||||||
*/
|
|
||||||
get pagination$(): Observable<PartnerRecommendationPagination | undefined> {
|
|
||||||
return this.__pagination.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerRecommendation
|
|
||||||
*/
|
|
||||||
get partnerRecommendation$(): Observable<PartnerRecommendation | undefined> {
|
|
||||||
return this.__partnerRecommendation.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerRecommendations
|
|
||||||
*/
|
|
||||||
get partnerRecommendations$(): Observable<
|
|
||||||
PartnerRecommendation[] | undefined
|
|
||||||
> {
|
|
||||||
return this.__partnerRecommendations.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get partnerRecommendations
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param page
|
|
||||||
* @param size
|
|
||||||
* @param sort
|
|
||||||
* @param order
|
|
||||||
* @param search
|
|
||||||
*/
|
|
||||||
getPartnerRecommendations(
|
|
||||||
page: number = 0,
|
|
||||||
size: number = 10,
|
|
||||||
sort: string = 'name',
|
|
||||||
order: 'asc' | 'desc' | '' = 'asc',
|
|
||||||
search: string = ''
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerRecommendationPagination;
|
|
||||||
partnerRecommendations: PartnerRecommendation[];
|
|
||||||
}> {
|
|
||||||
return this._httpClient
|
|
||||||
.get<{
|
|
||||||
pagination: PartnerRecommendationPagination;
|
|
||||||
partnerRecommendations: PartnerRecommendation[];
|
|
||||||
}>('api/apps/member/partner-recommendation/partner-recommendations', {
|
|
||||||
params: {
|
|
||||||
page: '' + page,
|
|
||||||
size: '' + size,
|
|
||||||
sort,
|
|
||||||
order,
|
|
||||||
search,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((response) => {
|
|
||||||
this.__pagination.next(response.pagination);
|
|
||||||
this.__partnerRecommendations.next(response.partnerRecommendations);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product by id
|
|
||||||
*/
|
|
||||||
getPartnerRecommendationById(
|
|
||||||
id: string | null
|
|
||||||
): Observable<PartnerRecommendation> {
|
|
||||||
return this.__partnerRecommendations.pipe(
|
|
||||||
take(1),
|
|
||||||
map((partnerRecommendations) => {
|
|
||||||
// Find the product
|
|
||||||
const partnerRecommendation =
|
|
||||||
partnerRecommendations?.find((item) => item.id === id) || undefined;
|
|
||||||
|
|
||||||
// Update the product
|
|
||||||
this.__partnerRecommendation.next(partnerRecommendation);
|
|
||||||
|
|
||||||
// Return the product
|
|
||||||
return partnerRecommendation;
|
|
||||||
}),
|
|
||||||
switchMap((product) => {
|
|
||||||
if (!product) {
|
|
||||||
return throwError('Could not found product with id of ' + id + '!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return of(product);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create product
|
|
||||||
*/
|
|
||||||
createPartnerRecommendation(): Observable<PartnerRecommendation> {
|
|
||||||
return this.partnerRecommendations$.pipe(
|
|
||||||
take(1),
|
|
||||||
switchMap((partnerRecommendations) =>
|
|
||||||
this._httpClient
|
|
||||||
.post<PartnerRecommendation>(
|
|
||||||
'api/apps/member/partner-recommendation/product',
|
|
||||||
{}
|
|
||||||
)
|
|
||||||
.pipe(
|
|
||||||
map((newPartnerRecommendation) => {
|
|
||||||
// Update the partnerRecommendations with the new product
|
|
||||||
if (!!partnerRecommendations) {
|
|
||||||
this.__partnerRecommendations.next([
|
|
||||||
newPartnerRecommendation,
|
|
||||||
...partnerRecommendations,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new product
|
|
||||||
return newPartnerRecommendation;
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
import { ListComponent } from './list.component';
|
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
|
|
@ -1,8 +0,0 @@
|
||||||
export interface PartnerStorePagination {
|
|
||||||
length: number;
|
|
||||||
size: number;
|
|
||||||
page: number;
|
|
||||||
lastPage: number;
|
|
||||||
startIndex: number;
|
|
||||||
endIndex: number;
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
export interface PartnerStore {
|
|
||||||
id?: string;
|
|
||||||
totalPartnerCount?: number;
|
|
||||||
totalHoldingMoney?: number;
|
|
||||||
totalComp?: number;
|
|
||||||
total?: number;
|
|
||||||
branchCount?: number;
|
|
||||||
divisionCount?: number;
|
|
||||||
officeCount?: number;
|
|
||||||
storeCount?: number;
|
|
||||||
memberCount?: number;
|
|
||||||
nickname?: string;
|
|
||||||
accountHolder?: string;
|
|
||||||
phoneNumber?: string;
|
|
||||||
calculateType?: string;
|
|
||||||
ownCash?: number;
|
|
||||||
ownComp?: number;
|
|
||||||
ownCoupon?: number;
|
|
||||||
gameMoney?: number;
|
|
||||||
todayComp?: number;
|
|
||||||
totalDeposit?: number;
|
|
||||||
totalWithdraw?: number;
|
|
||||||
balance?: number;
|
|
||||||
registDate?: string;
|
|
||||||
finalSigninDate?: string;
|
|
||||||
ip?: string;
|
|
||||||
state?: string;
|
|
||||||
note?: string;
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
||||||
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
||||||
import { MatRippleModule } from '@angular/material/core';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
|
||||||
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
|
||||||
|
|
||||||
import { SharedModule } from 'app/shared/shared.module';
|
|
||||||
|
|
||||||
import { COMPONENTS } from './components';
|
|
||||||
|
|
||||||
import { partnerStoreRoutes } from './partner-store.routing';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [COMPONENTS],
|
|
||||||
imports: [
|
|
||||||
TranslocoModule,
|
|
||||||
SharedModule,
|
|
||||||
RouterModule.forChild(partnerStoreRoutes),
|
|
||||||
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatIconModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatPaginatorModule,
|
|
||||||
MatProgressBarModule,
|
|
||||||
MatRippleModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatSelectModule,
|
|
||||||
MatTooltipModule,
|
|
||||||
MatGridListModule,
|
|
||||||
MatSlideToggleModule,
|
|
||||||
MatRadioModule,
|
|
||||||
MatCheckboxModule,
|
|
||||||
],
|
|
||||||
})
|
|
||||||
export class PartnerStoreModule {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { Route } from '@angular/router';
|
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
|
||||||
|
|
||||||
import { PartnerStoresResolver } from './resolvers/partner-store.resolver';
|
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerStoreRoutes: Route[] = [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: ListComponent,
|
|
||||||
resolve: {
|
|
||||||
partnerStores: PartnerStoresResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: ViewComponent,
|
|
||||||
resolve: {
|
|
||||||
users: UserResolver,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,89 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import {
|
|
||||||
ActivatedRouteSnapshot,
|
|
||||||
Resolve,
|
|
||||||
Router,
|
|
||||||
RouterStateSnapshot,
|
|
||||||
} from '@angular/router';
|
|
||||||
import { catchError, Observable, throwError } from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerStore } from '../models/partner-store';
|
|
||||||
import { PartnerStorePagination } from '../models/partner-store-pagination';
|
|
||||||
import { PartnerStoreService } from '../services/partner-store.service';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerStoreResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(
|
|
||||||
private _partnerStoreService: PartnerStoreService,
|
|
||||||
private _router: Router
|
|
||||||
) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<PartnerStore | undefined> {
|
|
||||||
return this._partnerStoreService
|
|
||||||
.getPartnerStoreById(route.paramMap.get('id'))
|
|
||||||
.pipe(
|
|
||||||
// Error here means the requested product is not available
|
|
||||||
catchError((error) => {
|
|
||||||
// Log the error
|
|
||||||
console.error(error);
|
|
||||||
|
|
||||||
// Get the parent url
|
|
||||||
const parentUrl = state.url.split('/').slice(0, -1).join('/');
|
|
||||||
|
|
||||||
// Navigate to there
|
|
||||||
this._router.navigateByUrl(parentUrl);
|
|
||||||
|
|
||||||
// Throw an error
|
|
||||||
return throwError(error);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerStoresResolver implements Resolve<any> {
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _partnerStoreService: PartnerStoreService) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolver
|
|
||||||
*
|
|
||||||
* @param route
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
resolve(
|
|
||||||
route: ActivatedRouteSnapshot,
|
|
||||||
state: RouterStateSnapshot
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerStorePagination;
|
|
||||||
partnerStores: PartnerStore[];
|
|
||||||
}> {
|
|
||||||
return this._partnerStoreService.getPartnerStores();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,158 +0,0 @@
|
||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { HttpClient } from '@angular/common/http';
|
|
||||||
import {
|
|
||||||
BehaviorSubject,
|
|
||||||
filter,
|
|
||||||
map,
|
|
||||||
Observable,
|
|
||||||
of,
|
|
||||||
switchMap,
|
|
||||||
take,
|
|
||||||
tap,
|
|
||||||
throwError,
|
|
||||||
} from 'rxjs';
|
|
||||||
|
|
||||||
import { PartnerStore } from '../models/partner-store';
|
|
||||||
import { PartnerStorePagination } from '../models/partner-store-pagination';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class PartnerStoreService {
|
|
||||||
// Private
|
|
||||||
private __pagination = new BehaviorSubject<
|
|
||||||
PartnerStorePagination | undefined
|
|
||||||
>(undefined);
|
|
||||||
private __partnerStore = new BehaviorSubject<PartnerStore | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
private __partnerStores = new BehaviorSubject<PartnerStore[] | undefined>(
|
|
||||||
undefined
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
constructor(private _httpClient: HttpClient) {}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Accessors
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for pagination
|
|
||||||
*/
|
|
||||||
get pagination$(): Observable<PartnerStorePagination | undefined> {
|
|
||||||
return this.__pagination.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerStore
|
|
||||||
*/
|
|
||||||
get partnerStore$(): Observable<PartnerStore | undefined> {
|
|
||||||
return this.__partnerStore.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Getter for partnerStores
|
|
||||||
*/
|
|
||||||
get partnerStores$(): Observable<PartnerStore[] | undefined> {
|
|
||||||
return this.__partnerStores.asObservable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
// @ Public methods
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get partnerStores
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param page
|
|
||||||
* @param size
|
|
||||||
* @param sort
|
|
||||||
* @param order
|
|
||||||
* @param search
|
|
||||||
*/
|
|
||||||
getPartnerStores(
|
|
||||||
page: number = 0,
|
|
||||||
size: number = 10,
|
|
||||||
sort: string = 'name',
|
|
||||||
order: 'asc' | 'desc' | '' = 'asc',
|
|
||||||
search: string = ''
|
|
||||||
): Observable<{
|
|
||||||
pagination: PartnerStorePagination;
|
|
||||||
partnerStores: PartnerStore[];
|
|
||||||
}> {
|
|
||||||
return this._httpClient
|
|
||||||
.get<{
|
|
||||||
pagination: PartnerStorePagination;
|
|
||||||
partnerStores: PartnerStore[];
|
|
||||||
}>('api/apps/member/partner-store/partner-stores', {
|
|
||||||
params: {
|
|
||||||
page: '' + page,
|
|
||||||
size: '' + size,
|
|
||||||
sort,
|
|
||||||
order,
|
|
||||||
search,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.pipe(
|
|
||||||
tap((response) => {
|
|
||||||
this.__pagination.next(response.pagination);
|
|
||||||
this.__partnerStores.next(response.partnerStores);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get product by id
|
|
||||||
*/
|
|
||||||
getPartnerStoreById(id: string | null): Observable<PartnerStore> {
|
|
||||||
return this.__partnerStores.pipe(
|
|
||||||
take(1),
|
|
||||||
map((partnerStores) => {
|
|
||||||
// Find the product
|
|
||||||
const partnerStore =
|
|
||||||
partnerStores?.find((item) => item.id === id) || undefined;
|
|
||||||
|
|
||||||
// Update the product
|
|
||||||
this.__partnerStore.next(partnerStore);
|
|
||||||
|
|
||||||
// Return the product
|
|
||||||
return partnerStore;
|
|
||||||
}),
|
|
||||||
switchMap((product) => {
|
|
||||||
if (!product) {
|
|
||||||
return throwError('Could not found product with id of ' + id + '!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return of(product);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create product
|
|
||||||
*/
|
|
||||||
createPartnerStore(): Observable<PartnerStore> {
|
|
||||||
return this.partnerStores$.pipe(
|
|
||||||
take(1),
|
|
||||||
switchMap((partnerStores) =>
|
|
||||||
this._httpClient
|
|
||||||
.post<PartnerStore>('api/apps/member/partner-store/product', {})
|
|
||||||
.pipe(
|
|
||||||
map((newPartnerStore) => {
|
|
||||||
// Update the partnerStores with the new product
|
|
||||||
if (!!partnerStores) {
|
|
||||||
this.__partnerStores.next([newPartnerStore, ...partnerStores]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the new product
|
|
||||||
return newPartnerStore;
|
|
||||||
})
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -36,8 +36,8 @@ import { PartnerService } from '../services/partner.service';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'list',
|
selector: 'app-partner-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './all-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,7 +62,7 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class AllListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
|
@ -30,14 +30,16 @@ import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../../user/models/user';
|
import { User } from '../../user/models/user';
|
||||||
import { PartnerBranch } from '../models/partner-branch';
|
|
||||||
import { PartnerBranchPagination } from '../models/partner-branch-pagination';
|
import { Partner as PartnerBranch } from '../models/partner';
|
||||||
import { PartnerBranchService } from '../services/partner-branch.service';
|
import { PartnerPagination as PartnerBranchPagination } from '../models/partner-pagination';
|
||||||
|
import { PartnerService as PartnerBranchService } from '../services/partner.service';
|
||||||
|
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-branch-list',
|
selector: 'app-partner-branch-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './branch-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,11 +64,12 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class BranchListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
partnerBranchs$!: Observable<PartnerBranch[] | undefined>;
|
partnerBranchs$!: Observable<PartnerBranch[] | undefined>;
|
||||||
|
|
||||||
users$!: Observable<User[] | undefined>;
|
users$!: Observable<User[] | undefined>;
|
||||||
|
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
|
@ -107,7 +110,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.partnerBranchs$ = this._partnerBranchService.partnerBranchs$;
|
this.partnerBranchs$ = this._partnerBranchService.partners$;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,7 +141,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
return this._partnerBranchService.getPartnerBranchs(
|
return this._partnerBranchService.getPartners(
|
||||||
this._paginator.pageIndex,
|
this._paginator.pageIndex,
|
||||||
this._paginator.pageSize,
|
this._paginator.pageSize,
|
||||||
this._sort.active,
|
this._sort.active,
|
|
@ -30,14 +30,15 @@ import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../../user/models/user';
|
import { User } from '../../user/models/user';
|
||||||
import { PartnerDivision } from '../models/partner-division';
|
import { Partner as PartnerDivision } from '../models/partner';
|
||||||
import { PartnerDivisionPagination } from '../models/partner-division-pagination';
|
import { PartnerPagination as PartnerDivisionPagination } from '../models/partner-pagination';
|
||||||
import { PartnerDivisionService } from '../services/partner-division.service';
|
import { PartnerService as PartnerDivisionService } from '../services/partner.service';
|
||||||
|
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-division-list',
|
selector: 'app-partner-division-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './division-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,7 +63,7 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class DivisionListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
|
@ -107,7 +108,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.partnerDivisions$ = this._partnerDivisionService.partnerDivisions$;
|
this.partnerDivisions$ = this._partnerDivisionService.partners$;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,7 +139,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
return this._partnerDivisionService.getPartnerDivisions(
|
return this._partnerDivisionService.getPartners(
|
||||||
this._paginator.pageIndex,
|
this._paginator.pageIndex,
|
||||||
this._paginator.pageSize,
|
this._paginator.pageSize,
|
||||||
this._sort.active,
|
this._sort.active,
|
|
@ -1,3 +1,17 @@
|
||||||
import { ListComponent } from './list.component';
|
import { AllListComponent } from './all-list.component';
|
||||||
|
import { MainOfficeListComponent } from './main-office-list.component';
|
||||||
|
import { BranchListComponent } from './branch-list.component';
|
||||||
|
import { DivisionListComponent } from './division-list.component';
|
||||||
|
import { OfficeListComponent } from './office-list.component';
|
||||||
|
import { RecommendationListComponent } from './recommendation-list.component';
|
||||||
|
import { StoreListComponent } from './store-list.component';
|
||||||
|
|
||||||
export const COMPONENTS = [ListComponent];
|
export const COMPONENTS = [
|
||||||
|
AllListComponent,
|
||||||
|
MainOfficeListComponent,
|
||||||
|
OfficeListComponent,
|
||||||
|
BranchListComponent,
|
||||||
|
DivisionListComponent,
|
||||||
|
RecommendationListComponent,
|
||||||
|
StoreListComponent,
|
||||||
|
];
|
||||||
|
|
|
@ -30,14 +30,14 @@ import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../../user/models/user';
|
import { User } from '../../user/models/user';
|
||||||
import { PartnerMainoffice } from '../models/partner-mainoffice';
|
import { Partner as PartnerMainoffice } from '../models/partner';
|
||||||
import { PartnerMainofficePagination } from '../models/partner-mainoffice-pagination';
|
import { PartnerPagination as PartnerMainofficePagination } from '../models/partner-pagination';
|
||||||
import { PartnerMainofficeService } from '../services/partner-mainoffice.service';
|
import { PartnerService as PartnerMainofficeService } from '../services/partner.service';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-mainoffice-list',
|
selector: 'app-partner-main-office-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './main-office-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,7 +62,9 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class MainOfficeListComponent
|
||||||
|
implements OnInit, AfterViewInit, OnDestroy
|
||||||
|
{
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
|
@ -107,8 +109,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.partnerMainoffices$ =
|
this.partnerMainoffices$ = this._partnerMainofficeService.partners$;
|
||||||
this._partnerMainofficeService.partnerMainoffices$;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -139,7 +140,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
return this._partnerMainofficeService.getPartnerMainoffices(
|
return this._partnerMainofficeService.getPartners(
|
||||||
this._paginator.pageIndex,
|
this._paginator.pageIndex,
|
||||||
this._paginator.pageSize,
|
this._paginator.pageSize,
|
||||||
this._sort.active,
|
this._sort.active,
|
|
@ -30,14 +30,16 @@ import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../../user/models/user';
|
import { User } from '../../user/models/user';
|
||||||
import { PartnerOffice } from '../models/partner-office';
|
|
||||||
import { PartnerOfficePagination } from '../models/partner-office-pagination';
|
import { Partner as PartnerOffice } from '../models/partner';
|
||||||
import { PartnerOfficeService } from '../services/partner-office.service';
|
import { PartnerPagination as PartnerOfficePagination } from '../models/partner-pagination';
|
||||||
|
import { PartnerService as PartnerOfficeService } from '../services/partner.service';
|
||||||
|
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-office-list',
|
selector: 'app-partner-office-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './office-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,7 +64,7 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class OfficeListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
|
@ -107,7 +109,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.partnerOffices$ = this._partnerOfficeService.partnerOffices$;
|
this.partnerOffices$ = this._partnerOfficeService.partners$;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,7 +140,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
return this._partnerOfficeService.getPartnerOffices(
|
return this._partnerOfficeService.getPartners(
|
||||||
this._paginator.pageIndex,
|
this._paginator.pageIndex,
|
||||||
this._paginator.pageSize,
|
this._paginator.pageSize,
|
||||||
this._sort.active,
|
this._sort.active,
|
|
@ -30,14 +30,16 @@ import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../../user/models/user';
|
import { User } from '../../user/models/user';
|
||||||
import { PartnerRecommendation } from '../models/partner-recommendation';
|
|
||||||
import { PartnerRecommendationPagination } from '../models/partner-recommendation-pagination';
|
import { Partner as PartnerRecommendation } from '../models/partner';
|
||||||
import { PartnerRecommendationService } from '../services/partner-recommendation.service';
|
import { PartnerPagination as PartnerRecommendationPagination } from '../models/partner-pagination';
|
||||||
|
import { PartnerService as PartnerRecommendationService } from '../services/partner.service';
|
||||||
|
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-recommendation-list',
|
selector: 'app-partner-recommendation-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './recommendation-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,7 +64,9 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class RecommendationListComponent
|
||||||
|
implements OnInit, AfterViewInit, OnDestroy
|
||||||
|
{
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
|
@ -107,8 +111,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.partnerRecommendations$ =
|
this.partnerRecommendations$ = this._partnerRecommendationService.partners$;
|
||||||
this._partnerRecommendationService.partnerRecommendations$;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -139,7 +142,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
return this._partnerRecommendationService.getPartnerRecommendations(
|
return this._partnerRecommendationService.getPartners(
|
||||||
this._paginator.pageIndex,
|
this._paginator.pageIndex,
|
||||||
this._paginator.pageSize,
|
this._paginator.pageSize,
|
||||||
this._sort.active,
|
this._sort.active,
|
|
@ -30,14 +30,15 @@ import { fuseAnimations } from '@fuse/animations';
|
||||||
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
import { FuseConfirmationService } from '@fuse/services/confirmation';
|
||||||
|
|
||||||
import { User } from '../../user/models/user';
|
import { User } from '../../user/models/user';
|
||||||
import { PartnerStore } from '../models/partner-store';
|
import { Partner as PartnerStore } from '../models/partner';
|
||||||
import { PartnerStorePagination } from '../models/partner-store-pagination';
|
import { PartnerPagination as PartnerStorePagination } from '../models/partner-pagination';
|
||||||
import { PartnerStoreService } from '../services/partner-store.service';
|
import { PartnerService as PartnerStoreService } from '../services/partner.service';
|
||||||
|
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'partner-store-list',
|
selector: 'app-partner-store-list',
|
||||||
templateUrl: './list.component.html',
|
templateUrl: './store-list.component.html',
|
||||||
styles: [
|
styles: [
|
||||||
/* language=SCSS */
|
/* language=SCSS */
|
||||||
`
|
`
|
||||||
|
@ -62,7 +63,7 @@ import { Router } from '@angular/router';
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
animations: fuseAnimations,
|
animations: fuseAnimations,
|
||||||
})
|
})
|
||||||
export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
export class StoreListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
@ViewChild(MatPaginator) private _paginator!: MatPaginator;
|
||||||
@ViewChild(MatSort) private _sort!: MatSort;
|
@ViewChild(MatSort) private _sort!: MatSort;
|
||||||
|
|
||||||
|
@ -107,7 +108,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the products
|
// Get the products
|
||||||
this.partnerStores$ = this._partnerStoreService.partnerStores$;
|
this.partnerStores$ = this._partnerStoreService.partners$;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,7 +139,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||||
.pipe(
|
.pipe(
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
return this._partnerStoreService.getPartnerStores(
|
return this._partnerStoreService.getPartners(
|
||||||
this._paginator.pageIndex,
|
this._paginator.pageIndex,
|
||||||
this._paginator.pageSize,
|
this._paginator.pageSize,
|
||||||
this._sort.active,
|
this._sort.active,
|
|
@ -20,6 +20,9 @@ export interface Partner {
|
||||||
comp?: number;
|
comp?: number;
|
||||||
coupon?: number;
|
coupon?: number;
|
||||||
ownCharge?: number;
|
ownCharge?: number;
|
||||||
|
ownCash?: number;
|
||||||
|
ownComp?: number;
|
||||||
|
ownCoupon?: number;
|
||||||
bottomCharge?: number;
|
bottomCharge?: number;
|
||||||
ownExchange?: number;
|
ownExchange?: number;
|
||||||
bottomExchange?: number;
|
bottomExchange?: number;
|
||||||
|
@ -28,4 +31,14 @@ export interface Partner {
|
||||||
accession?: string;
|
accession?: string;
|
||||||
state?: string;
|
state?: string;
|
||||||
note?: string;
|
note?: string;
|
||||||
|
ip?: string;
|
||||||
|
totalPartnerCount?: number;
|
||||||
|
total?: number;
|
||||||
|
gameMoney?: number;
|
||||||
|
todayComp?: number;
|
||||||
|
totalDeposit?: number;
|
||||||
|
totalWithdraw?: number;
|
||||||
|
balance?: number;
|
||||||
|
registDate?: string;
|
||||||
|
finalSigninDate?: string;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
||||||
import { MatGridListModule } from '@angular/material/grid-list';
|
import { MatGridListModule } from '@angular/material/grid-list';
|
||||||
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
||||||
import { MatRadioModule } from '@angular/material/radio';
|
import { MatRadioModule } from '@angular/material/radio';
|
||||||
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
||||||
|
|
||||||
import { TranslocoModule } from '@ngneat/transloco';
|
import { TranslocoModule } from '@ngneat/transloco';
|
||||||
|
|
||||||
|
@ -43,6 +44,7 @@ import { partnerRoutes } from './partner.routing';
|
||||||
MatGridListModule,
|
MatGridListModule,
|
||||||
MatSlideToggleModule,
|
MatSlideToggleModule,
|
||||||
MatRadioModule,
|
MatRadioModule,
|
||||||
|
MatCheckboxModule,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class PartnerModule {}
|
export class PartnerModule {}
|
||||||
|
|
|
@ -1,24 +1,68 @@
|
||||||
import { Route } from '@angular/router';
|
import { Route } from '@angular/router';
|
||||||
|
|
||||||
import { ListComponent } from './components/list.component';
|
import { AllListComponent } from './components/all-list.component';
|
||||||
import { ViewComponent } from '../user/components/view.component';
|
import { MainOfficeListComponent } from './components/main-office-list.component';
|
||||||
|
import { OfficeListComponent } from './components/office-list.component';
|
||||||
|
import { BranchListComponent } from './components/branch-list.component';
|
||||||
|
import { DivisionListComponent } from './components/division-list.component';
|
||||||
|
import { RecommendationListComponent } from './components/recommendation-list.component';
|
||||||
|
import { StoreListComponent } from './components/store-list.component';
|
||||||
|
|
||||||
import { PartnersResolver } from './resolvers/partner.resolver';
|
import { PartnersResolver } from './resolvers/partner.resolver';
|
||||||
import { UserResolver } from '../user/resolvers/user.resolver';
|
|
||||||
|
|
||||||
export const partnerRoutes: Route[] = [
|
export const partnerRoutes: Route[] = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: ListComponent,
|
pathMatch: 'full',
|
||||||
|
redirectTo: 'all',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'all',
|
||||||
|
component: AllListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
Partners: PartnersResolver,
|
Partners: PartnersResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':id',
|
path: 'main-office',
|
||||||
component: ViewComponent,
|
component: MainOfficeListComponent,
|
||||||
resolve: {
|
resolve: {
|
||||||
users: UserResolver,
|
Partners: PartnersResolver,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'branch',
|
||||||
|
component: BranchListComponent,
|
||||||
|
resolve: {
|
||||||
|
Partners: PartnersResolver,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'division',
|
||||||
|
component: DivisionListComponent,
|
||||||
|
resolve: {
|
||||||
|
Partners: PartnersResolver,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'recommendation',
|
||||||
|
component: RecommendationListComponent,
|
||||||
|
resolve: {
|
||||||
|
Partners: PartnersResolver,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'office',
|
||||||
|
component: OfficeListComponent,
|
||||||
|
resolve: {
|
||||||
|
Partners: PartnersResolver,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'store',
|
||||||
|
component: StoreListComponent,
|
||||||
|
resolve: {
|
||||||
|
Partners: PartnersResolver,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
"Casinomoney": "CASINO 머니파악",
|
"Casinomoney": "CASINO 머니파악",
|
||||||
"Unconnected": "장기미접속회원",
|
"Unconnected": "장기미접속회원",
|
||||||
"Project": "프로젝트",
|
"Project": "프로젝트",
|
||||||
|
"partner-management": "파트너관리",
|
||||||
"All Partner": "전체파트너",
|
"All Partner": "전체파트너",
|
||||||
"Partner Mainoffice": "본사",
|
"Partner Mainoffice": "본사",
|
||||||
"Partner Branch": "대본",
|
"Partner Branch": "대본",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user