import { Injectable } from '@angular/core';
import { assign, cloneDeep } from 'lodash-es';
import { FuseMockApiService, FuseMockApiUtils } from '@fuse/lib/mock-api';
import { ladderSetting as ladderSettingData } from './data';

@Injectable({
  providedIn: 'root',
})
export class LadderSettingMockApi {
  private _ladderSetting: any = ladderSettingData;

  /**
   * Constructor
   */
  constructor(private _fuseMockApiService: FuseMockApiService) {
    // Register Mock API handlers
    this.registerHandlers();
  }

  // -----------------------------------------------------------------------------------------------------
  // @ Public methods
  // -----------------------------------------------------------------------------------------------------

  /**
   * Register Mock API handlers
   */
  registerHandlers(): void {
    // -----------------------------------------------------------------------------------------------------
    // @ BasicSetting - GET
    // -----------------------------------------------------------------------------------------------------
    this._fuseMockApiService
      .onGet('api/apps/settings/ladder', 300)
      .reply(({ request }) => {
        // Clone the deposits
        let ladderSetting: any | null = cloneDeep(this._ladderSetting);

        // Return the response
        return [
          200,
          {
            ladderSetting,
          },
        ];
      });

    // -----------------------------------------------------------------------------------------------------
    // @ BasicSetting - PATCH
    // -----------------------------------------------------------------------------------------------------
    this._fuseMockApiService
      .onPatch('api/apps/settings/ladder')
      .reply(({ request }) => {
        // Get the id and deposit
        const id = request.body.id;
        const ladderSetting = cloneDeep(request.body.ladderSetting);

        // Prepare the updated basicSetting
        let updatedBasicSetting = null;

        // Find the deposit and update it
        // this._basicSetting.forEach((item, index, bs) => {
        //   if (item.id === id) {
        //     // Update the deposit
        //     basicSetting[index] = assign({}, basicSetting[index], deposit);

        //     // Store the updated deposit
        //     updatedDeposit = deposits[index];
        //   }
        // });

        // Return the response
        return [200, ladderSetting];
      });
  }
}
