import { Injectable } from "@nestjs/common";
import { TabDoencaEntity} from "../entity/tab-doenca-entity";

@Injectable()
export class TabDoencaRepository {
    private readonly _doencas: TabDoencaEntity[] = []

    async add(doenca: TabDoencaEntity) {
        this._doencas.push(doenca)
    }

    async list() {
        return this._doencas
    }

 async search(id: string) {
        const doenca: TabDoencaEntity = this._doencas.find((a: TabDoencaEntity) => a.id === id)

        return doenca
    }

    async searchByTitle(title: string) {
        const doenca: TabDoencaEntity = this._doencas.find(n => n.nome === title)

        return doenca;
    }

    private _getIndex(id: string) {
        const index: number = this._doencas.findIndex((a: TabDoencaEntity) => a.id === id)

        return index
    }

    async update(id: string, doenca: TabDoencaEntity) {
        let index = this._getIndex(id)

        if ( index < 0 ) {
            return {
                message: "Doença não encontrada"
            }
        }

        doenca.id = id

        this._doencas[index] = doenca

        return {
            message: "Doença atualizada com sucesso",
            data: this._doencas[index]
        }
    }

    async remove(id: string) {
        let index = this._getIndex(id)

        if ( index < 0 ) {
            return {
                message: "Doença não encontrada"
            }
        }

        let doenca = this._doencas.splice(index, 1)

        return {
            message: "Doença removida com sucesso",
            data: doenca
        }
    }
}