파트너입출금정산 page 추가
This commit is contained in:
		
							parent
							
								
									2537d85937
								
							
						
					
					
						commit
						eb19f24f55
					
				| @ -267,6 +267,13 @@ export const appRoutes: Route[] = [ | ||||
|                 'app/modules/admin/bank/web-calculate/web-calculate.module' | ||||
|               ).then((m: any) => m.WebCalculateModule), | ||||
|           }, | ||||
|           { | ||||
|             path: 'partner-calculate', | ||||
|             loadChildren: () => | ||||
|               import( | ||||
|                 'app/modules/admin/bank/partner-calculate/partner-calculate.module' | ||||
|               ).then((m: any) => m.PartnerCalculateModule), | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       { | ||||
|  | ||||
							
								
								
									
										222
									
								
								src/app/mock-api/apps/bank/partner-calculate/api.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										222
									
								
								src/app/mock-api/apps/bank/partner-calculate/api.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,222 @@ | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { assign, cloneDeep } from 'lodash-es'; | ||||
| import { FuseMockApiService, FuseMockApiUtils } from '@fuse/lib/mock-api'; | ||||
| import { partnerCalculates as partnerCalculatesData } from './data'; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class BankPartnerCalculateMockApi { | ||||
|   private _partnerCalculates: any[] = partnerCalculatesData; | ||||
| 
 | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor(private _fuseMockApiService: FuseMockApiService) { | ||||
|     // Register Mock API handlers
 | ||||
|     this.registerHandlers(); | ||||
|   } | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Register Mock API handlers | ||||
|    */ | ||||
|   registerHandlers(): void { | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ PartnerCalculates - GET
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onGet('api/apps/bank/partner-calculate/partner-calculates', 300) | ||||
|       .reply(({ request }) => { | ||||
|         // Get available queries
 | ||||
|         const search = request.params.get('search'); | ||||
|         const sort = request.params.get('sort') || 'name'; | ||||
|         const order = request.params.get('order') || 'asc'; | ||||
|         const page = parseInt(request.params.get('page') ?? '1', 10); | ||||
|         const size = parseInt(request.params.get('size') ?? '10', 10); | ||||
| 
 | ||||
|         // Clone the partnerCalculates
 | ||||
|         let partnerCalculates: any[] | null = cloneDeep( | ||||
|           this._partnerCalculates | ||||
|         ); | ||||
| 
 | ||||
|         // Sort the partnerCalculates
 | ||||
|         if (sort === 'sku' || sort === 'name' || sort === 'active') { | ||||
|           partnerCalculates.sort((a, b) => { | ||||
|             const fieldA = a[sort].toString().toUpperCase(); | ||||
|             const fieldB = b[sort].toString().toUpperCase(); | ||||
|             return order === 'asc' | ||||
|               ? fieldA.localeCompare(fieldB) | ||||
|               : fieldB.localeCompare(fieldA); | ||||
|           }); | ||||
|         } else { | ||||
|           partnerCalculates.sort((a, b) => | ||||
|             order === 'asc' ? a[sort] - b[sort] : b[sort] - a[sort] | ||||
|           ); | ||||
|         } | ||||
| 
 | ||||
|         // If search exists...
 | ||||
|         if (search) { | ||||
|           // Filter the partnerCalculates
 | ||||
|           partnerCalculates = partnerCalculates.filter( | ||||
|             (contact: any) => | ||||
|               contact.name && | ||||
|               contact.name.toLowerCase().includes(search.toLowerCase()) | ||||
|           ); | ||||
|         } | ||||
| 
 | ||||
|         // Paginate - Start
 | ||||
|         const partnerCalculatesLength = partnerCalculates.length; | ||||
| 
 | ||||
|         // Calculate pagination details
 | ||||
|         const begin = page * size; | ||||
|         const end = Math.min(size * (page + 1), partnerCalculatesLength); | ||||
|         const lastPage = Math.max(Math.ceil(partnerCalculatesLength / size), 1); | ||||
| 
 | ||||
|         // Prepare the pagination object
 | ||||
|         let pagination = {}; | ||||
| 
 | ||||
|         // If the requested page number is bigger than
 | ||||
|         // the last possible page number, return null for
 | ||||
|         // partnerCalculates but also send the last possible page so
 | ||||
|         // the app can navigate to there
 | ||||
|         if (page > lastPage) { | ||||
|           partnerCalculates = null; | ||||
|           pagination = { | ||||
|             lastPage, | ||||
|           }; | ||||
|         } else { | ||||
|           // Paginate the results by size
 | ||||
|           partnerCalculates = partnerCalculates.slice(begin, end); | ||||
| 
 | ||||
|           // Prepare the pagination mock-api
 | ||||
|           pagination = { | ||||
|             length: partnerCalculatesLength, | ||||
|             size: size, | ||||
|             page: page, | ||||
|             lastPage: lastPage, | ||||
|             startIndex: begin, | ||||
|             endIndex: end - 1, | ||||
|           }; | ||||
|         } | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [ | ||||
|           200, | ||||
|           { | ||||
|             partnerCalculates, | ||||
|             pagination, | ||||
|           }, | ||||
|         ]; | ||||
|       }); | ||||
| 
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ PartnerCalculate - GET
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onGet('api/apps/bank/partner-calculate/partner-calculate') | ||||
|       .reply(({ request }) => { | ||||
|         // Get the id from the params
 | ||||
|         const id = request.params.get('id'); | ||||
| 
 | ||||
|         // Clone the partnerCalculates
 | ||||
|         const partnerCalculates = cloneDeep(this._partnerCalculates); | ||||
| 
 | ||||
|         // Find the partnerCalculate
 | ||||
|         const partnerCalculate = partnerCalculates.find( | ||||
|           (item: any) => item.id === id | ||||
|         ); | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [200, partnerCalculate]; | ||||
|       }); | ||||
| 
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ PartnerCalculate - POST
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onPost('api/apps/bank/partner-calculate/partner-calculate') | ||||
|       .reply(() => { | ||||
|         // Generate a new partnerCalculate
 | ||||
|         const newPartnerCalculate = { | ||||
|           id: FuseMockApiUtils.guid(), | ||||
|           rank: '', | ||||
|           level: '', | ||||
|           nickname: '', | ||||
|           paymentDue: '', | ||||
|           calculateType: '', | ||||
|           accountHolder: '', | ||||
|           note: '', | ||||
|           registrationDate: '', | ||||
|           processDate: '', | ||||
|           deposit: '', | ||||
|           withdrawal: '', | ||||
|           total: '', | ||||
|           gameMoney: '', | ||||
|           highRank: '', | ||||
|           state: '', | ||||
|         }; | ||||
| 
 | ||||
|         // Unshift the new partnerCalculate
 | ||||
|         this._partnerCalculates.unshift(newPartnerCalculate); | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [200, newPartnerCalculate]; | ||||
|       }); | ||||
| 
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ PartnerCalculate - PATCH
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onPatch('api/apps/bank/partner-calculate/partner-calculate') | ||||
|       .reply(({ request }) => { | ||||
|         // Get the id and partnerCalculate
 | ||||
|         const id = request.body.id; | ||||
|         const partnerCalculate = cloneDeep(request.body.partnerCalculate); | ||||
| 
 | ||||
|         // Prepare the updated partnerCalculate
 | ||||
|         let updatedPartnerCalculate = null; | ||||
| 
 | ||||
|         // Find the partnerCalculate and update it
 | ||||
|         this._partnerCalculates.forEach((item, index, partnerCalculates) => { | ||||
|           if (item.id === id) { | ||||
|             // Update the partnerCalculate
 | ||||
|             partnerCalculates[index] = assign( | ||||
|               {}, | ||||
|               partnerCalculates[index], | ||||
|               partnerCalculate | ||||
|             ); | ||||
| 
 | ||||
|             // Store the updated partnerCalculate
 | ||||
|             updatedPartnerCalculate = partnerCalculates[index]; | ||||
|           } | ||||
|         }); | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [200, updatedPartnerCalculate]; | ||||
|       }); | ||||
| 
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     // @ PartnerCalculate - DELETE
 | ||||
|     // -----------------------------------------------------------------------------------------------------
 | ||||
|     this._fuseMockApiService | ||||
|       .onDelete('api/apps/bank/partner-calculate/partner-calculate') | ||||
|       .reply(({ request }) => { | ||||
|         // Get the id
 | ||||
|         const id = request.params.get('id'); | ||||
| 
 | ||||
|         // Find the partnerCalculate and delete it
 | ||||
|         this._partnerCalculates.forEach((item, index) => { | ||||
|           if (item.id === id) { | ||||
|             this._partnerCalculates.splice(index, 1); | ||||
|           } | ||||
|         }); | ||||
| 
 | ||||
|         // Return the response
 | ||||
|         return [200, true]; | ||||
|       }); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										58
									
								
								src/app/mock-api/apps/bank/partner-calculate/data.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/app/mock-api/apps/bank/partner-calculate/data.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| /* eslint-disable */ | ||||
| 
 | ||||
| export const partnerCalculates = [ | ||||
|   { | ||||
|     rank: '회원', | ||||
|     level: 4, | ||||
|     id: 'aa100', | ||||
|     nickname: 'aa100', | ||||
|     paymentDue: 50000, | ||||
|     calculateType: '롤링', | ||||
|     accountHolder: '광주은행2sss', | ||||
|     note: '@', | ||||
|     registrationDate: '2022-06-18 13:14', | ||||
|     processDate: '000-0-0 0:0', | ||||
|     deposit: 41200000, | ||||
|     withdraw: 19000000, | ||||
|     total: 22200000, | ||||
|     gameMoney: 67131, | ||||
|     highRank: '[매장]kgon5', | ||||
|     state: '신청', | ||||
|   }, | ||||
|   { | ||||
|     rank: '회원', | ||||
|     level: 1, | ||||
|     id: 'onon6', | ||||
|     nickname: '가가가', | ||||
|     paymentDue: 100000, | ||||
|     calculateType: '롤링', | ||||
|     accountHolder: '가가가', | ||||
|     note: '', | ||||
|     registrationDate: '2022-06-13 12:57', | ||||
|     processDate: '2022-06-13 12:58', | ||||
|     deposit: 200000, | ||||
|     withdraw: 0, | ||||
|     total: 200000, | ||||
|     gameMoney: 0, | ||||
|     highRank: '[매장]on04', | ||||
|     state: '완료', | ||||
|   }, | ||||
|   { | ||||
|     rank: '회원', | ||||
|     level: 1, | ||||
|     id: 'onon6', | ||||
|     nickname: '가가가', | ||||
|     paymentDue: 100000, | ||||
|     calculateType: '롤링', | ||||
|     accountHolder: '가가가', | ||||
|     note: '', | ||||
|     registrationDate: '2022-06-13 12:56', | ||||
|     processDate: '2022-06-13 12:57', | ||||
|     deposit: 200000, | ||||
|     withdraw: 0, | ||||
|     total: 200000, | ||||
|     gameMoney: 0, | ||||
|     highRank: '[매장]on04', | ||||
|     state: '완료', | ||||
|   }, | ||||
| ]; | ||||
| @ -167,6 +167,13 @@ export const defaultNavigation: FuseNavigationItem[] = [ | ||||
|         icon: 'heroicons_outline:academic-cap', | ||||
|         link: '/bank/web-calculate', | ||||
|       }, | ||||
|       { | ||||
|         id: 'bank.partner-calculate', | ||||
|         title: 'Partner Calculate', | ||||
|         type: 'basic', | ||||
|         icon: 'heroicons_outline:academic-cap', | ||||
|         link: '/bank/partner-calculate', | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|  | ||||
| @ -37,6 +37,7 @@ import { UserMockApi } from 'app/mock-api/common/user/api'; | ||||
| import { BankDepositMockApi } from './apps/bank/deposit/api'; | ||||
| import { BankWithdrawMockApi } from './apps/bank/withdraw/api'; | ||||
| import { BankWebCalculateMockApi } from './apps/bank/web-calculate/api'; | ||||
| import { BankPartnerCalculateMockApi } from './apps/bank/partner-calculate/api'; | ||||
| import { GamePowerballMockApi } from './apps/game/powerball/api'; | ||||
| import { GameCasinoMockApi } from './apps/game/casino/api'; | ||||
| import { GameEvolutionMockApi } from './apps/game/evolution/api'; | ||||
| @ -107,6 +108,7 @@ export const mockApiServices = [ | ||||
|   BankDepositMockApi, | ||||
|   BankWithdrawMockApi, | ||||
|   BankWebCalculateMockApi, | ||||
|   BankPartnerCalculateMockApi, | ||||
|   GamePowerballMockApi, | ||||
|   GameCasinoMockApi, | ||||
|   GameEvolutionMockApi, | ||||
|  | ||||
| @ -0,0 +1,3 @@ | ||||
| import { ListComponent } from './list.component'; | ||||
| 
 | ||||
| export const COMPONENTS = [ListComponent]; | ||||
| @ -0,0 +1,356 @@ | ||||
| <div | ||||
|   class="sm:absolute sm:inset-0 flex flex-col flex-auto min-w-0 sm:overflow-hidden bg-card dark:bg-transparent" | ||||
| > | ||||
|   <!-- Header --> | ||||
|   <div | ||||
|     class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-8 px-6 md:px-8 border-b" | ||||
|   > | ||||
|     <!-- Loader --> | ||||
|     <div class="absolute inset-x-0 bottom-0" *ngIf="isLoading"> | ||||
|       <mat-progress-bar [mode]="'indeterminate'"></mat-progress-bar> | ||||
|     </div> | ||||
|     <!-- Title --> | ||||
|     <div class="text-4xl font-extrabold tracking-tight">파트너 입/출금정산</div> | ||||
|     <!-- Actions --> | ||||
|     <div class="flex shrink-0 items-center mt-6 sm:mt-0 sm:ml-4"> | ||||
|       <!-- Memo --> | ||||
|       <mat-form-field> | ||||
|         <input matInput type="text" /> | ||||
|       </mat-form-field> | ||||
|       <button mat-flat-button [color]="'primary'">메모저장</button> | ||||
|       <!-- SelectBox --> | ||||
|       <mat-form-field> | ||||
|         <mat-select placeholder="내용"> | ||||
|           <mat-option value="">카지노콤프</mat-option> | ||||
|           <mat-option value="">슬롯콤프</mat-option> | ||||
|           <mat-option value="">배팅콤프</mat-option> | ||||
|           <mat-option value="">첫충콤프</mat-option> | ||||
|         </mat-select> | ||||
|       </mat-form-field> | ||||
|       <mat-form-field> | ||||
|         <mat-select placeholder="아이디"> | ||||
|           <mat-option value="">아이디</mat-option> | ||||
|           <mat-option value="">닉네임</mat-option> | ||||
|           <mat-option value="">이름</mat-option> | ||||
|           <mat-option value="">사이트</mat-option> | ||||
|           <mat-option value="">파트너수동지급</mat-option> | ||||
|         </mat-select> | ||||
|       </mat-form-field> | ||||
|       <!-- Search --> | ||||
|       <mat-form-field | ||||
|         class="fuse-mat-dense fuse-mat-no-subscript fuse-mat-rounded min-w-64" | ||||
|       > | ||||
|         <mat-icon | ||||
|           class="icon-size-5" | ||||
|           matPrefix | ||||
|           [svgIcon]="'heroicons_solid:search'" | ||||
|         ></mat-icon> | ||||
|         <input | ||||
|           matInput | ||||
|           [formControl]="searchInputControl" | ||||
|           [autocomplete]="'off'" | ||||
|           [placeholder]="'Search'" | ||||
|         /> | ||||
|       </mat-form-field> | ||||
|       <!-- Search button --> | ||||
|       <button | ||||
|         class="ml-4" | ||||
|         mat-flat-button | ||||
|         [color]="'primary'" | ||||
|         (click)="__createProduct()" | ||||
|       > | ||||
|         <!-- <mat-icon [svgIcon]="'heroicons_outline:plus'"></mat-icon> --> | ||||
|         <span class="ml-2 mr-1">검색하기</span> | ||||
|       </button> | ||||
|     </div> | ||||
|   </div> | ||||
| 
 | ||||
|   <!-- Main --> | ||||
|   <div class="flex flex-auto overflow-hidden"> | ||||
|     <div class="hidden sm:block truncate"> | ||||
|       <button mat-flat-button [color]="'primary'">입금 처리</button> | ||||
|       <button mat-flat-button [color]="'primary'">대기 처리</button> | ||||
|     </div> | ||||
|     <!-- Products list --> | ||||
|     <div | ||||
|       class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto" | ||||
|     > | ||||
|       <ng-container *ngIf="partnerCalculates$ | async as partnerCalculates"> | ||||
|         <ng-container | ||||
|           *ngIf="partnerCalculates.length > 0; else noPartnerCalculate" | ||||
|         > | ||||
|           <div class="grid"> | ||||
|             <!-- Header --> | ||||
|             <div | ||||
|               class="inventory-grid z-10 sticky top-0 grid gap-4 py-4 px-6 md:px-8 shadow text-md font-semibold text-secondary bg-gray-50 dark:bg-black dark:bg-opacity-5" | ||||
|               matSort | ||||
|               matSortDisableClear | ||||
|             > | ||||
|               <div></div> | ||||
|               <div class="hidden sm:block">등급</div> | ||||
|               <div class="hidden sm:block">레벨</div> | ||||
|               <div class="hidden sm:block">아이디</div> | ||||
|               <div class="hidden sm:block">닉네임</div> | ||||
|               <div class="hidden sm:block">입금예정금액</div> | ||||
|               <div class="hidden sm:block">정산종류</div> | ||||
|               <div class="hidden sm:block">회원정보</div> | ||||
|               <div class="hidden sm:block">비고</div> | ||||
|               <div class="hidden sm:block">등록날짜</div> | ||||
|               <div class="hidden sm:block">처리날짜</div> | ||||
|               <div class="hidden sm:block">입금출금</div> | ||||
|               <div class="hidden sm:block">게임중머니</div> | ||||
|               <div class="hidden sm:block">카지노->캐쉬</div> | ||||
|               <div class="hidden sm:block">상위</div> | ||||
|               <div class="hidden sm:block">상태</div> | ||||
|               <div class="hidden sm:block">배팅정보</div> | ||||
|               <div class="hidden sm:block">삭제</div> | ||||
|               <!-- <div class="hidden md:block" [mat-sort-header]="'sku'">SKU</div> | ||||
|               <div [mat-sort-header]="'name'">Name</div> | ||||
|               <div class="hidden sm:block" [mat-sort-header]="'price'"> | ||||
|                 Price | ||||
|               </div> | ||||
|               <div class="hidden lg:block" [mat-sort-header]="'stock'"> | ||||
|                 Stock | ||||
|               </div> | ||||
|               <div class="hidden lg:block" [mat-sort-header]="'active'"> | ||||
|                 Active | ||||
|               </div> | ||||
|               <div class="hidden sm:block">Details</div> --> | ||||
|             </div> | ||||
|             <!-- Rows --> | ||||
|             <ng-container | ||||
|               *ngIf="partnerCalculates$ | async as partnerCalculates" | ||||
|             > | ||||
|               <ng-container | ||||
|                 *ngFor=" | ||||
|                   let partnerCalculate of partnerCalculates; | ||||
|                   trackBy: __trackByFn | ||||
|                 " | ||||
|               > | ||||
|                 <div | ||||
|                   class="inventory-grid grid items-center gap-4 py-3 px-6 md:px-8 border-b" | ||||
|                 > | ||||
|                   <!-- rank --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.rank }} | ||||
|                   </div> | ||||
|                   <!-- level --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     LV.{{ partnerCalculate.level }} | ||||
|                   </div> | ||||
|                   <!-- id --> | ||||
|                   <ng-container *ngIf="users$ | async as users"> | ||||
|                     <ng-container | ||||
|                       *ngFor="let user of users; trackBy: __trackByFn" | ||||
|                     > | ||||
|                       <div class="hidden sm:block truncate"> | ||||
|                         {{ partnerCalculate.id }} | ||||
|                       </div> | ||||
|                     </ng-container> | ||||
|                   </ng-container> | ||||
| 
 | ||||
|                   <!-- nickname --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.nickname }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- paymentDue --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.paymentDue }}원 | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- calculateType --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.calculateType }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- accountHolder --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.accountHolder }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- note --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.note }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- registrationDate --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.registrationDate }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- processDate --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.processDate }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- depositWithdrawal --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.deposit }}원 | ||||
|                     {{ partnerCalculate.withdraw }}원 | ||||
|                     {{ partnerCalculate.total }}원 | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- gameMoney --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.gameMoney }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- casinoCash --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     <button mat-flat-button [color]="'primary'"> | ||||
|                       게임머니확인 | ||||
|                     </button> | ||||
|                     <button mat-flat-button [color]="'primary'"> | ||||
|                       게임머니회수 | ||||
|                     </button> | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- highRank --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     <button mat-flat-button [color]="'primary'"> | ||||
|                       {{ partnerCalculate.highRank }} | ||||
|                     </button> | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- state --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     {{ partnerCalculate.state }} | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- bettingInformation --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     <button mat-flat-button [color]="'primary'"> | ||||
|                       배팅리스트 | ||||
|                     </button> | ||||
|                   </div> | ||||
| 
 | ||||
|                   <!-- delete --> | ||||
|                   <div class="hidden sm:block truncate"> | ||||
|                     <button mat-flat-button [color]="'primary'">취소</button> | ||||
|                   </div> | ||||
|                   <!-- Image --> | ||||
|                   <!-- <div class="flex items-center"> | ||||
|                     <div | ||||
|                       class="relative flex flex-0 items-center justify-center w-12 h-12 mr-6 rounded overflow-hidden border" | ||||
|                     > | ||||
|                       <img | ||||
|                         class="w-8" | ||||
|                         *ngIf="user.thumbnail" | ||||
|                         [alt]="'Product thumbnail image'" | ||||
|                         [src]="user.thumbnail" | ||||
|                       /> | ||||
|                       <div | ||||
|                         class="flex items-center justify-center w-full h-full text-xs font-semibold leading-none text-center uppercase" | ||||
|                         *ngIf="!user.thumbnail" | ||||
|                       > | ||||
|                         NO THUMB | ||||
|                       </div> | ||||
|                     </div> | ||||
|                   </div> --> | ||||
| 
 | ||||
|                   <!-- SKU --> | ||||
|                   <!-- <div class="hidden md:block truncate"> | ||||
|                     {{ user.sku }} | ||||
|                   </div> --> | ||||
| 
 | ||||
|                   <!-- Name --> | ||||
|                   <!-- <div class="truncate"> | ||||
|                     {{ user.name }} | ||||
|                   </div> --> | ||||
| 
 | ||||
|                   <!-- Price --> | ||||
|                   <!-- <div class="hidden sm:block"> | ||||
|                     {{ user.price | currency: "USD":"symbol":"1.2-2" }} | ||||
|                   </div> --> | ||||
| 
 | ||||
|                   <!-- Stock --> | ||||
|                   <!-- <div class="hidden lg:flex items-center"> | ||||
|                     <div class="min-w-4">{{ user.stock }}</div> --> | ||||
|                   <!-- Low stock --> | ||||
|                   <!-- <div | ||||
|                       class="flex items-end ml-2 w-1 h-4 bg-red-200 rounded overflow-hidden" | ||||
|                       *ngIf="user.stock < 20" | ||||
|                     > | ||||
|                       <div class="flex w-full h-1/3 bg-red-600"></div> | ||||
|                     </div> --> | ||||
|                   <!-- Medium stock --> | ||||
|                   <!-- <div | ||||
|                       class="flex items-end ml-2 w-1 h-4 bg-orange-200 rounded overflow-hidden" | ||||
|                       *ngIf="user.stock >= 20 && user.stock < 30" | ||||
|                     > | ||||
|                       <div class="flex w-full h-2/4 bg-orange-400"></div> | ||||
|                     </div> --> | ||||
|                   <!-- High stock --> | ||||
|                   <!-- <div | ||||
|                       class="flex items-end ml-2 w-1 h-4 bg-green-100 rounded overflow-hidden" | ||||
|                       *ngIf="user.stock >= 30" | ||||
|                     > | ||||
|                       <div class="flex w-full h-full bg-green-400"></div> | ||||
|                     </div> | ||||
|                   </div> --> | ||||
| 
 | ||||
|                   <!-- Active --> | ||||
|                   <!-- <div class="hidden lg:block"> | ||||
|                     <ng-container *ngIf="user.active"> | ||||
|                       <mat-icon | ||||
|                         class="text-green-400 icon-size-5" | ||||
|                         [svgIcon]="'heroicons_solid:check'" | ||||
|                       ></mat-icon> | ||||
|                     </ng-container> | ||||
|                     <ng-container *ngIf="!user.active"> | ||||
|                       <mat-icon | ||||
|                         class="text-gray-400 icon-size-5" | ||||
|                         [svgIcon]="'heroicons_solid:x'" | ||||
|                       ></mat-icon> | ||||
|                     </ng-container> | ||||
|                   </div> --> | ||||
| 
 | ||||
|                   <!-- Details button --> | ||||
|                   <!-- <div> | ||||
|                     <button | ||||
|                       class="min-w-10 min-h-7 h-7 px-2 leading-6" | ||||
|                       mat-stroked-button | ||||
|                       (click)="__toggleDetails(user.id)" | ||||
|                     > | ||||
|                       <mat-icon | ||||
|                         class="icon-size-5" | ||||
|                         [svgIcon]=" | ||||
|                           selectedUser?.id === user.id | ||||
|                             ? 'heroicons_solid:chevron-up' | ||||
|                             : 'heroicons_solid:chevron-down' | ||||
|                         " | ||||
|                       ></mat-icon> | ||||
|                     </button> | ||||
|                   </div> --> | ||||
|                 </div> | ||||
|               </ng-container> | ||||
|             </ng-container> | ||||
|           </div> | ||||
| 
 | ||||
|           <mat-paginator | ||||
|             class="sm:absolute sm:inset-x-0 sm:bottom-0 border-b sm:border-t sm:border-b-0 z-10 bg-gray-50 dark:bg-transparent" | ||||
|             [ngClass]="{ 'pointer-events-none': isLoading }" | ||||
|             [length]="pagination?.length" | ||||
|             [pageIndex]="pagination?.page" | ||||
|             [pageSize]="pagination?.size" | ||||
|             [pageSizeOptions]="[5, 10, 25, 100]" | ||||
|             [showFirstLastButtons]="true" | ||||
|           ></mat-paginator> | ||||
|         </ng-container> | ||||
|       </ng-container> | ||||
| 
 | ||||
|       <ng-template #noPartnerCalculate> | ||||
|         <div | ||||
|           class="p-8 sm:p-16 border-t text-4xl font-semibold tracking-tight text-center" | ||||
|         > | ||||
|           There are no Partner Calculate! | ||||
|         </div> | ||||
|       </ng-template> | ||||
|     </div> | ||||
|     <div class="hidden sm:block truncate"> | ||||
|       <button mat-flat-button [color]="'primary'">입금 처리</button> | ||||
|       <button mat-flat-button [color]="'primary'">대기 처리</button> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| @ -0,0 +1,192 @@ | ||||
| import { | ||||
|   AfterViewInit, | ||||
|   ChangeDetectionStrategy, | ||||
|   ChangeDetectorRef, | ||||
|   Component, | ||||
|   OnDestroy, | ||||
|   OnInit, | ||||
|   ViewChild, | ||||
|   ViewEncapsulation, | ||||
| } from '@angular/core'; | ||||
| import { | ||||
|   FormBuilder, | ||||
|   FormControl, | ||||
|   FormGroup, | ||||
|   Validators, | ||||
| } from '@angular/forms'; | ||||
| import { MatCheckboxChange } from '@angular/material/checkbox'; | ||||
| import { MatPaginator } from '@angular/material/paginator'; | ||||
| import { MatSort } from '@angular/material/sort'; | ||||
| import { | ||||
|   debounceTime, | ||||
|   map, | ||||
|   merge, | ||||
|   Observable, | ||||
|   Subject, | ||||
|   switchMap, | ||||
|   takeUntil, | ||||
| } from 'rxjs'; | ||||
| import { fuseAnimations } from '@fuse/animations'; | ||||
| import { FuseConfirmationService } from '@fuse/services/confirmation'; | ||||
| 
 | ||||
| import { User } from 'app/modules/admin/member/user/models/user'; | ||||
| import { PartnerCalculate } from '../models/partner-calculate'; | ||||
| import { PartnerCalculatePagination } from '../models/partner-calculate-pagination'; | ||||
| import { PartnerCalculateService } from '../services/partner-calculate.service'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'bank-list', | ||||
|   templateUrl: './list.component.html', | ||||
|   styles: [ | ||||
|     /* language=SCSS */ | ||||
|     ` | ||||
|       .inventory-grid { | ||||
|         grid-template-columns: 60px auto 40px; | ||||
| 
 | ||||
|         @screen sm { | ||||
|           grid-template-columns: 60px auto 60px 72px; | ||||
|         } | ||||
| 
 | ||||
|         @screen md { | ||||
|           grid-template-columns: 60px 60px auto 112px 72px; | ||||
|         } | ||||
| 
 | ||||
|         @screen lg { | ||||
|           grid-template-columns: 60px 60px auto 112px 96px 96px 72px; | ||||
|         } | ||||
|       } | ||||
|     `,
 | ||||
|   ], | ||||
|   encapsulation: ViewEncapsulation.None, | ||||
|   changeDetection: ChangeDetectionStrategy.OnPush, | ||||
|   animations: fuseAnimations, | ||||
| }) | ||||
| export class ListComponent implements OnInit, AfterViewInit, OnDestroy { | ||||
|   @ViewChild(MatPaginator) private _paginator!: MatPaginator; | ||||
|   @ViewChild(MatSort) private _sort!: MatSort; | ||||
| 
 | ||||
|   partnerCalculates$!: Observable<PartnerCalculate[] | undefined>; | ||||
|   users$!: Observable<User[] | undefined>; | ||||
| 
 | ||||
|   isLoading = false; | ||||
|   searchInputControl = new FormControl(); | ||||
|   selectedPartnerCalculate?: PartnerCalculate; | ||||
|   pagination?: PartnerCalculatePagination; | ||||
| 
 | ||||
|   private _unsubscribeAll: Subject<any> = new Subject<any>(); | ||||
| 
 | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor( | ||||
|     private _changeDetectorRef: ChangeDetectorRef, | ||||
|     private _fuseConfirmationService: FuseConfirmationService, | ||||
|     private _formBuilder: FormBuilder, | ||||
|     private _partnerCalculateService: PartnerCalculateService | ||||
|   ) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Lifecycle hooks
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * On init | ||||
|    */ | ||||
|   ngOnInit(): void { | ||||
|     // Get the pagination
 | ||||
|     this._partnerCalculateService.pagination$ | ||||
|       .pipe(takeUntil(this._unsubscribeAll)) | ||||
|       .subscribe((pagination: PartnerCalculatePagination | undefined) => { | ||||
|         // Update the pagination
 | ||||
|         this.pagination = pagination; | ||||
| 
 | ||||
|         // Mark for check
 | ||||
|         this._changeDetectorRef.markForCheck(); | ||||
|       }); | ||||
| 
 | ||||
|     // Get the products
 | ||||
|     this.partnerCalculates$ = this._partnerCalculateService.partnerCalculates$; | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * After view init | ||||
|    */ | ||||
|   ngAfterViewInit(): void { | ||||
|     if (this._sort && this._paginator) { | ||||
|       // Set the initial sort
 | ||||
|       this._sort.sort({ | ||||
|         id: 'nickname', | ||||
|         start: 'asc', | ||||
|         disableClear: true, | ||||
|       }); | ||||
| 
 | ||||
|       // Mark for check
 | ||||
|       this._changeDetectorRef.markForCheck(); | ||||
| 
 | ||||
|       // If the partnerCalculate changes the sort order...
 | ||||
|       this._sort.sortChange | ||||
|         .pipe(takeUntil(this._unsubscribeAll)) | ||||
|         .subscribe(() => { | ||||
|           // Reset back to the first page
 | ||||
|           this._paginator.pageIndex = 0; | ||||
|         }); | ||||
| 
 | ||||
|       // Get products if sort or page changes
 | ||||
|       merge(this._sort.sortChange, this._paginator.page) | ||||
|         .pipe( | ||||
|           switchMap(() => { | ||||
|             this.isLoading = true; | ||||
|             return this._partnerCalculateService.getPartnerCalculates( | ||||
|               this._paginator.pageIndex, | ||||
|               this._paginator.pageSize, | ||||
|               this._sort.active, | ||||
|               this._sort.direction | ||||
|             ); | ||||
|           }), | ||||
|           map(() => { | ||||
|             this.isLoading = false; | ||||
|           }) | ||||
|         ) | ||||
|         .subscribe(); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * On destroy | ||||
|    */ | ||||
|   ngOnDestroy(): void { | ||||
|     // Unsubscribe from all subscriptions
 | ||||
|     this._unsubscribeAll.next(null); | ||||
|     this._unsubscribeAll.complete(); | ||||
|   } | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Private methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Create product | ||||
|    */ | ||||
|   __createProduct(): void {} | ||||
| 
 | ||||
|   /** | ||||
|    * Toggle product details | ||||
|    * | ||||
|    * @param productId | ||||
|    */ | ||||
|   __toggleDetails(productId: string): void {} | ||||
| 
 | ||||
|   /** | ||||
|    * Track by function for ngFor loops | ||||
|    * | ||||
|    * @param index | ||||
|    * @param item | ||||
|    */ | ||||
|   __trackByFn(index: number, item: any): any { | ||||
|     return item.id || index; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,8 @@ | ||||
| export interface PartnerCalculatePagination { | ||||
|   length: number; | ||||
|   size: number; | ||||
|   page: number; | ||||
|   lastPage: number; | ||||
|   startIndex: number; | ||||
|   endIndex: number; | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| export interface PartnerCalculate { | ||||
|   id?: string; | ||||
|   rank?: string; | ||||
|   level?: string; | ||||
|   nickname?: string; | ||||
|   paymentDue?: number; | ||||
|   calculateType?: string; | ||||
|   accountHolder?: string; | ||||
|   note?: string; | ||||
|   registrationDate?: string; | ||||
|   processDate?: string; | ||||
|   deposit?: number; | ||||
|   withdraw?: number; | ||||
|   total?: number; | ||||
|   gameMoney?: number; | ||||
|   highRank?: string; | ||||
|   state?: string; | ||||
| } | ||||
| @ -0,0 +1,42 @@ | ||||
| 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 { TranslocoModule } from '@ngneat/transloco'; | ||||
| 
 | ||||
| import { SharedModule } from 'app/shared/shared.module'; | ||||
| 
 | ||||
| import { COMPONENTS } from './components'; | ||||
| 
 | ||||
| import { partnerCalculateRoutes } from './partner-calculate.routing'; | ||||
| 
 | ||||
| @NgModule({ | ||||
|   declarations: [COMPONENTS], | ||||
|   imports: [ | ||||
|     TranslocoModule, | ||||
|     SharedModule, | ||||
|     RouterModule.forChild(partnerCalculateRoutes), | ||||
| 
 | ||||
|     MatButtonModule, | ||||
|     MatFormFieldModule, | ||||
|     MatIconModule, | ||||
|     MatInputModule, | ||||
|     MatPaginatorModule, | ||||
|     MatProgressBarModule, | ||||
|     MatRippleModule, | ||||
|     MatSortModule, | ||||
|     MatSelectModule, | ||||
|     MatTooltipModule, | ||||
|   ], | ||||
| }) | ||||
| export class PartnerCalculateModule {} | ||||
| @ -0,0 +1,24 @@ | ||||
| import { Route } from '@angular/router'; | ||||
| 
 | ||||
| import { ListComponent } from './components/list.component'; | ||||
| import { ViewComponent } from '../../member/user/components/view.component'; | ||||
| 
 | ||||
| import { PartnerCalculatesResolver } from './resolvers/partner-calculate.resolver'; | ||||
| import { UserResolver } from '../../dashboards/user/user.resolvers'; | ||||
| 
 | ||||
| export const partnerCalculateRoutes: Route[] = [ | ||||
|   { | ||||
|     path: '', | ||||
|     component: ListComponent, | ||||
|     resolve: { | ||||
|       partnerCalculates: PartnerCalculatesResolver, | ||||
|     }, | ||||
|   }, | ||||
|   { | ||||
|     path: ':id', | ||||
|     component: ViewComponent, | ||||
|     resolve: { | ||||
|       users: UserResolver, | ||||
|     }, | ||||
|   }, | ||||
| ]; | ||||
| @ -0,0 +1,89 @@ | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { | ||||
|   ActivatedRouteSnapshot, | ||||
|   Resolve, | ||||
|   Router, | ||||
|   RouterStateSnapshot, | ||||
| } from '@angular/router'; | ||||
| import { catchError, Observable, throwError } from 'rxjs'; | ||||
| 
 | ||||
| import { PartnerCalculate } from '../models/partner-calculate'; | ||||
| import { PartnerCalculatePagination } from '../models/partner-calculate-pagination'; | ||||
| import { PartnerCalculateService } from '../services/partner-calculate.service'; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class PartnerCalculateResolver implements Resolve<any> { | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor( | ||||
|     private _partnerCalculateService: PartnerCalculateService, | ||||
|     private _router: Router | ||||
|   ) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Resolver | ||||
|    * | ||||
|    * @param route | ||||
|    * @param state | ||||
|    */ | ||||
|   resolve( | ||||
|     route: ActivatedRouteSnapshot, | ||||
|     state: RouterStateSnapshot | ||||
|   ): Observable<PartnerCalculate | undefined> { | ||||
|     return this._partnerCalculateService | ||||
|       .getPartnerCalculateById(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 PartnerCalculatesResolver implements Resolve<any> { | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor(private _partnerCalculateService: PartnerCalculateService) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Resolver | ||||
|    * | ||||
|    * @param route | ||||
|    * @param state | ||||
|    */ | ||||
|   resolve( | ||||
|     route: ActivatedRouteSnapshot, | ||||
|     state: RouterStateSnapshot | ||||
|   ): Observable<{ | ||||
|     pagination: PartnerCalculatePagination; | ||||
|     partnerCalculates: PartnerCalculate[]; | ||||
|   }> { | ||||
|     return this._partnerCalculateService.getPartnerCalculates(); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,161 @@ | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { HttpClient } from '@angular/common/http'; | ||||
| import { | ||||
|   BehaviorSubject, | ||||
|   filter, | ||||
|   map, | ||||
|   Observable, | ||||
|   of, | ||||
|   switchMap, | ||||
|   take, | ||||
|   tap, | ||||
|   throwError, | ||||
| } from 'rxjs'; | ||||
| 
 | ||||
| import { PartnerCalculate } from '../models/partner-calculate'; | ||||
| import { PartnerCalculatePagination } from '../models/partner-calculate-pagination'; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class PartnerCalculateService { | ||||
|   // Private
 | ||||
|   private __pagination = new BehaviorSubject< | ||||
|     PartnerCalculatePagination | undefined | ||||
|   >(undefined); | ||||
|   private __partnerCalculate = new BehaviorSubject< | ||||
|     PartnerCalculate | undefined | ||||
|   >(undefined); | ||||
|   private __partnerCalculates = new BehaviorSubject< | ||||
|     PartnerCalculate[] | undefined | ||||
|   >(undefined); | ||||
| 
 | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   constructor(private _httpClient: HttpClient) {} | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Accessors
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Getter for pagination | ||||
|    */ | ||||
|   get pagination$(): Observable<PartnerCalculatePagination | undefined> { | ||||
|     return this.__pagination.asObservable(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Getter for partnerCalculate | ||||
|    */ | ||||
|   get partnerCalculate$(): Observable<PartnerCalculate | undefined> { | ||||
|     return this.__partnerCalculate.asObservable(); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Getter for partnerCalculates | ||||
|    */ | ||||
|   get partnerCalculates$(): Observable<PartnerCalculate[] | undefined> { | ||||
|     return this.__partnerCalculates.asObservable(); | ||||
|   } | ||||
| 
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
|   // @ Public methods
 | ||||
|   // -----------------------------------------------------------------------------------------------------
 | ||||
| 
 | ||||
|   /** | ||||
|    * Get partnerCalculates | ||||
|    * | ||||
|    * | ||||
|    * @param page | ||||
|    * @param size | ||||
|    * @param sort | ||||
|    * @param order | ||||
|    * @param search | ||||
|    */ | ||||
|   getPartnerCalculates( | ||||
|     page: number = 0, | ||||
|     size: number = 10, | ||||
|     sort: string = 'nickname', | ||||
|     order: 'asc' | 'desc' | '' = 'asc', | ||||
|     search: string = '' | ||||
|   ): Observable<{ | ||||
|     pagination: PartnerCalculatePagination; | ||||
|     partnerCalculates: PartnerCalculate[]; | ||||
|   }> { | ||||
|     return this._httpClient | ||||
|       .get<{ | ||||
|         pagination: PartnerCalculatePagination; | ||||
|         partnerCalculates: PartnerCalculate[]; | ||||
|       }>('api/apps/bank/partner-calculate/partner-calculates', { | ||||
|         params: { | ||||
|           page: '' + page, | ||||
|           size: '' + size, | ||||
|           sort, | ||||
|           order, | ||||
|           search, | ||||
|         }, | ||||
|       }) | ||||
|       .pipe( | ||||
|         tap((response) => { | ||||
|           this.__pagination.next(response.pagination); | ||||
|           this.__partnerCalculates.next(response.partnerCalculates); | ||||
|         }) | ||||
|       ); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Get product by id | ||||
|    */ | ||||
|   getPartnerCalculateById(id: string | null): Observable<PartnerCalculate> { | ||||
|     return this.__partnerCalculates.pipe( | ||||
|       take(1), | ||||
|       map((partnerCalculates) => { | ||||
|         // Find the product
 | ||||
|         const partnerCalculate = | ||||
|           partnerCalculates?.find((item) => item.id === id) || undefined; | ||||
| 
 | ||||
|         // Update the product
 | ||||
|         this.__partnerCalculate.next(partnerCalculate); | ||||
| 
 | ||||
|         // Return the product
 | ||||
|         return partnerCalculate; | ||||
|       }), | ||||
|       switchMap((product) => { | ||||
|         if (!product) { | ||||
|           return throwError('Could not found product with id of ' + id + '!'); | ||||
|         } | ||||
| 
 | ||||
|         return of(product); | ||||
|       }) | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Create product | ||||
|    */ | ||||
|   createPartnerCalculate(): Observable<PartnerCalculate> { | ||||
|     return this.partnerCalculates$.pipe( | ||||
|       take(1), | ||||
|       switchMap((partnerCalculates) => | ||||
|         this._httpClient | ||||
|           .post<PartnerCalculate>('api/apps/bank/partner-calculate/product', {}) | ||||
|           .pipe( | ||||
|             map((newPartnerCalculate) => { | ||||
|               // Update the partnerCalculates with the new product
 | ||||
|               if (!!partnerCalculates) { | ||||
|                 this.__partnerCalculates.next([ | ||||
|                   newPartnerCalculate, | ||||
|                   ...partnerCalculates, | ||||
|                 ]); | ||||
|               } | ||||
| 
 | ||||
|               // Return the new product
 | ||||
|               return newPartnerCalculate; | ||||
|             }) | ||||
|           ) | ||||
|       ) | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -20,6 +20,7 @@ | ||||
|   "Deposit": "Deposit", | ||||
|   "Withdraw": "Withdraw", | ||||
|   "Web Calculate": "Web Calculate", | ||||
|   "Partner Calculate": "Partner Calculate", | ||||
|   "Powerball": "Powerball", | ||||
|   "Casino": "Casino", | ||||
|   "Evolution": "Evolution", | ||||
|  | ||||
| @ -20,6 +20,7 @@ | ||||
|   "Deposit": "입금관리", | ||||
|   "Withdraw": "출금관리", | ||||
|   "Web Calculate": "웹 입/출금 정산", | ||||
|   "Partner Calculate": "파트너 입/출금 정산", | ||||
|   "Powerball": "파워볼", | ||||
|   "Casino": "카지노배팅리스트", | ||||
|   "Evolution": "에볼루션배팅리스트", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user