using adas_core.Domain.Enums;
using adas_core.Domain.Models.MongoModels;
using MongoDB.Bson;

namespace adas_core.Application.Services.Interfaces;

public interface IHistoricalConfigChangesService
{
    Task<ICollection<HistoricalConfigChanges>> GetAll();
    Task<HistoricalConfigChanges?> Get(ObjectId id);
    Task<ICollection<HistoricalConfigChanges>> GetByType(DisplayConfigEnums.ConfigTypes type, int num);

    Task<ICollection<HistoricalConfigChanges>> GetByUser(string user, DisplayConfigEnums.ConfigTypes? configTypes,
        int num);

    Task<HistoricalConfigChanges?> FindLastConfigChanges(DisplayConfigEnums.ConfigTypes configTypes);


    Task<HistoricalConfigChanges?> InsertOne(HistoricalConfigChanges historicalConfigChanges);
    Task<HistoricalConfigChanges?> UpdateHistoricalConfigChange(HistoricalConfigChanges historicalConfigChanges);

    Task DeleteHistoricalConfigChange(ObjectId id);

    Task LogConfigChanged(string user, DisplayConfigEnums.ConfigTypes configType, string newConfig, string oldConfig);
}