<?php

namespace App\Modules\WebContactMessage\Domain;

use App\Modules\Shared\Domain\DateEnd;
use App\Modules\Shared\Domain\DateStart;
use App\Modules\Shared\Domain\Storage\Criteria\ConcreteStorageCriteria;
use App\Modules\Shared\Domain\Storage\Criteria\StorageCriteria;
use App\Modules\WebContact\Domain\IdWebContact;

interface WebContactMessageRepository
{
    public function search(StorageCriteria $criteria);
    public function searchWithConcrete(ConcreteStorageCriteria $criteria);
    public function index(IdWebContactMessage $id);
    public function find(IdWebContact $idWebContact, string $action);
    public function findAll(DateStart $dateStart, DateEnd $dateEnd, string $action);
    public function insert(WebContactMessage $value);
    public function update(UpdateWebContactMessage $value);
    public function updateAlter(WebContactMessage $value);
    public function delete(IdWebContactMessage $id);
    public function reloadStatusByBooking(IdWebContactMessage $idWebContactMessage);
}
