파트너 폴더 정리

This commit is contained in:
Park Byung Eun 2022-07-15 07:11:51 +00:00
parent 581d94ae0e
commit 0090cc5c65
65 changed files with 468 additions and 2344 deletions

View File

@ -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: () =>

View File

@ -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',

View 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>

View 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 {}
}

View File

@ -1,3 +0,0 @@
import { ListComponent } from './list.component';
export const COMPONENTS = [ListComponent];

View File

@ -1,8 +0,0 @@
export interface PartnerBranchPagination {
length: number;
size: number;
page: number;
lastPage: number;
startIndex: number;
endIndex: number;
}

View File

@ -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;
}

View File

@ -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 {}

View File

@ -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,
},
},
];

View File

@ -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();
}
}

View File

@ -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;
})
)
)
);
}
}

View File

@ -1,3 +0,0 @@
import { ListComponent } from './list.component';
export const COMPONENTS = [ListComponent];

View File

@ -1,8 +0,0 @@
export interface PartnerDivisionPagination {
length: number;
size: number;
page: number;
lastPage: number;
startIndex: number;
endIndex: number;
}

View File

@ -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;
}

View File

@ -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 {}

View File

@ -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,
},
},
];

View File

@ -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();
}
}

View File

@ -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;
})
)
)
);
}
}

View File

@ -1,3 +0,0 @@
import { ListComponent } from './list.component';
export const COMPONENTS = [ListComponent];

View File

@ -1,8 +0,0 @@
export interface PartnerMainofficePagination {
length: number;
size: number;
page: number;
lastPage: number;
startIndex: number;
endIndex: number;
}

View File

@ -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;
}

View File

@ -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 {}

View File

@ -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,
},
},
];

View File

@ -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();
}
}

View File

@ -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;
})
)
)
);
}
}

View File

@ -1,3 +0,0 @@
import { ListComponent } from './list.component';
export const COMPONENTS = [ListComponent];

View File

@ -1,8 +0,0 @@
export interface PartnerOfficePagination {
length: number;
size: number;
page: number;
lastPage: number;
startIndex: number;
endIndex: number;
}

View File

@ -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;
}

View File

@ -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 {}

View File

@ -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,
},
},
];

View File

@ -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();
}
}

View File

@ -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;
})
)
)
);
}
}

View File

@ -1,3 +0,0 @@
import { ListComponent } from './list.component';
export const COMPONENTS = [ListComponent];

View File

@ -1,8 +0,0 @@
export interface PartnerRecommendationPagination {
length: number;
size: number;
page: number;
lastPage: number;
startIndex: number;
endIndex: number;
}

View File

@ -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;
}

View File

@ -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 {}

View File

@ -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,
},
},
];

View File

@ -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();
}
}

View File

@ -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;
})
)
)
);
}
}

View File

@ -1,3 +0,0 @@
import { ListComponent } from './list.component';
export const COMPONENTS = [ListComponent];

View File

@ -1,8 +0,0 @@
export interface PartnerStorePagination {
length: number;
size: number;
page: number;
lastPage: number;
startIndex: number;
endIndex: number;
}

View File

@ -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;
}

View File

@ -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 {}

View File

@ -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,
},
},
];

View File

@ -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();
}
}

View File

@ -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;
})
)
)
);
}
}

View File

@ -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;

View File

@ -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,

View File

@ -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,

View File

@ -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,
];

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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;
} }

View File

@ -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 {}

View File

@ -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,
}, },
}, },
]; ];

View File

@ -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": "대본",