using Grand.Domain.Vendors;
using Grand.Web.Admin.Models.Vendors;

namespace Grand.Web.Admin.Interfaces;

public interface IVendorViewModelService
{
    Task PrepareDiscountModel(VendorModel model, Vendor vendor, bool excludeProperties);

    Task PrepareVendorReviewModel(VendorReviewModel model,
        VendorReview vendorReview, bool excludeProperties, bool formatReviewText);

    Task PrepareVendorAddressModel(VendorModel model, Vendor vendor);
    Task PrepareStore(VendorModel model);
    Task<IList<VendorModel.AssociatedCustomerInfo>> AssociatedCustomers(string vendorId);
    Task<VendorModel> PrepareVendorModel();
    Task<Vendor> InsertVendorModel(VendorModel model);
    Task<Vendor> UpdateVendorModel(Vendor vendor, VendorModel model);
    Task DeleteVendor(Vendor vendor);
    IList<VendorModel.VendorNote> PrepareVendorNote(Vendor vendor);
    Task<bool> InsertVendorNote(string vendorId, string message);
    Task DeleteVendorNote(string id, string vendorId);

    Task<(IEnumerable<VendorReviewModel> vendorReviewModels, int totalCount)> PrepareVendorReviewModel(
        VendorReviewListModel model, int pageIndex, int pageSize);

    Task<VendorReview> UpdateVendorReviewModel(VendorReview vendorReview, VendorReviewModel model);
    Task DeleteVendorReview(VendorReview vendorReview);
    Task ApproveVendorReviews(IEnumerable<string> selectedIds);
    Task DisapproveVendorReviews(IEnumerable<string> selectedIds);
}