57 lines
2.4 KiB
C#
57 lines
2.4 KiB
C#
using FruitBank.Common.Entities;
|
|
using FruitBank.Common.Enums;
|
|
|
|
namespace Nop.Plugin.Misc.FruitBankPlugin.Services;
|
|
|
|
public interface IOrderDraftService
|
|
{
|
|
/// <summary>
|
|
/// Egy bejövő szöveges üzenet alapján létrehozza a rendelés tervezet(eke)t.
|
|
/// Ha az üzenetben több különböző szállítási dátum szerepel, minden dátumhoz külön draft jön létre.
|
|
/// </summary>
|
|
Task<List<OrderDraft>> CreateDraftsFromMessageAsync(string externalUsername, string rawMessageText);
|
|
|
|
/// <summary>Egy draft betöltése tételeivel együtt.</summary>
|
|
Task<OrderDraft?> GetByIdAsync(int id, bool loadRelations = true);
|
|
|
|
/// <summary>Pending draftek listája, opcionálisan szűrve partner szerint.</summary>
|
|
Task<List<OrderDraft>> GetPendingAsync(int? customerId = null);
|
|
|
|
/// <summary>Összes draft lapozhatóan (admin lista).</summary>
|
|
Task<(List<OrderDraft> Items, int TotalCount)> GetPagedAsync(
|
|
int pageIndex, int pageSize,
|
|
OrderDraftStatus? status = null,
|
|
int? customerId = null);
|
|
|
|
/// <summary>
|
|
/// Admin jóváhagyja a draftot: minden tétel SelectedProductId-ja be kell legyen állítva.
|
|
/// A dátumtól függően PreOrder vagy Order jön létre.
|
|
/// Menti a ProductTextMapping rekordokat a tanuláshoz.
|
|
/// </summary>
|
|
Task<OrderDraftApproveResult> ApproveAsync(int draftId, int adminId);
|
|
|
|
/// <summary>Admin elutasítja a draftot.</summary>
|
|
Task RejectAsync(int draftId, int adminId, string? adminNote = null);
|
|
|
|
/// <summary>Admin hozzárendeli a partnert egy mappingból még hiányzó drafthoz.</summary>
|
|
Task AssignCustomerAsync(int draftId, int customerId, int adminId);
|
|
|
|
/// <summary>Admin frissíti egy tétel kiválasztott termékét és/vagy mennyiségét.</summary>
|
|
Task UpdateDraftItemAsync(int draftItemId, int selectedProductId, int quantity);
|
|
|
|
/// <summary>14 napnál régebbi pending draftek automatikus lejáratása (background job hívja).</summary>
|
|
Task ExpireOldDraftsAsync();
|
|
}
|
|
|
|
public class OrderDraftApproveResult
|
|
{
|
|
public bool Success { get; set; }
|
|
public string? ErrorMessage { get; set; }
|
|
|
|
/// <summary>A létrehozott PreOrder ID-k (ha előrendelés lett).</summary>
|
|
public List<int> PreOrderIds { get; set; } = [];
|
|
|
|
/// <summary>A létrehozott Order ID-k (ha azonnali rendelés lett).</summary>
|
|
public List<int> OrderIds { get; set; } = [];
|
|
}
|