// Libs
// -----------------------------------------------------------------------------
import _cloneDeep from 'lodash/cloneDeep';

// App
// -----------------------------------------------------------------------------
import { TypeAccount, TypeAccountForBackend } from 'types/default';
import { GenericDataStore } from './GenericDataStore';
import { environment } from 'enviroments/enviroments';

export class AccountsStoreNew extends GenericDataStore<
  TypeAccount,
  TypeAccountForBackend
> {
  constructor() {
    super(environment.endPoints.accounts.users);
    this.override();
  }

  getId = (entity: TypeAccount): number => entity.user.id;

  getName = (entity: TypeAccount): string => entity.user.username;

  prepareDataForBackend = (entity: TypeAccount): TypeAccountForBackend => {
    const entityCopy: TypeAccountForBackend = _cloneDeep(entity);

    // Если поля паролей пустые - не отсылать их на бэкенд, значит смены пароля
    // не было.
    if (!entityCopy.user.password) {
      delete entityCopy.user.password;
    }
    if (!entityCopy.user.old_password) {
      delete entityCopy.user.old_password;
    }

    return entityCopy;
  };
}
