diff --git a/TIEcommerce/Sources/Cart protocols/CartEditable.swift b/TIEcommerce/Sources/Cart protocols/CartEditable.swift new file mode 100644 index 00000000..c5bb1e99 --- /dev/null +++ b/TIEcommerce/Sources/Cart protocols/CartEditable.swift @@ -0,0 +1,33 @@ +import Foundation + +///Изменение количества единиц товара +/// +///Интерфейс для модели товара с опциональным полем доступного количества товара и применение изменений в интерфейсе модели локальной корзины +protocol ProductCountInCartHolder { + // у тебя массив продуктов с количеством лежит локально, и вот ты его заменяешь на то, что пришло + var countInCart: Int? { get set } +} + +protocol ProductCountInCartDelegate: AnyObject { + func countInCartDidChanged(count: Int, productID: Int) +} + +///Выбор варианта товара +/// +///Интерфейс для модели товара с массивом доступных вариантов и применение изменений в интерфейсе модели локальной корзины. +///Вариант является интерфейсом товара, но конкретная модель может быть другой. +///(Под вариантом подразумевается разная фасовка, цвет, размер и пр. характеристики товара.) +protocol ChoosableProductVariant { + ///Варианты товара (фасовка, цвет, размер, и т.п.) + var variants: [CartProduct] { get } + +} + +///Возможность вернуть товар в корзину +/// +///В интерфейсе локальной корзины должны присуствовать товары, которые были удалены из корзины, но которые можно вернуть. +///При отправке корзины на оформление заказа эти товары не учитываются. +protocol RemovableProductCart { + var removedProducts: [CartProduct] { get set } +} +