package database

import (
	"fmt"

	"git.gocasts.ir/ebhomengo/niki/staffapp/service"
)

type DB struct {
	staffs []service.Staff
	nextID int
}

func New() service.StaffRepository {
	return &DB{
		staffs: []service.Staff{},
		nextID: 1,
	}
}

func (d *DB) Create(staff service.Staff) (service.Staff, error) {
	staff.ID = d.nextID
	d.staffs = append(d.staffs, staff)
	d.nextID++
	return staff, nil
}

func (d *DB) Get(id int) (*service.Staff, error) {
	for _, v := range d.staffs {
		if id == v.ID {
			return &v, nil
		}

	}

	return nil, fmt.Errorf("The user not found with id = %d", id)
}

func (d *DB) List() ([]service.Staff, error) {
	return d.staffs, nil
}
func (d *DB) Remove(id int) error {
	for _, v := range d.staffs {
		if id == v.ID {
			d.staffs = append(d.staffs[:id], d.staffs[id+1:]...)
			return nil
		}

	}
	return fmt.Errorf("User with ID: %d notfound", id)
}
func (d *DB) Update(id int, name, lastName, phoneNumber string) (*service.Staff, error) {
	for _, v := range d.staffs {
		if id == v.ID {
			v.Name = name
			v.LastName = lastName
			v.PhoneNumber = phoneNumber

			return &v, nil
		}

	}
	return nil, fmt.Errorf("User with this Id(%d)couldn't found for updating", id)
}
