Skip to content

Commit

Permalink
refactor: method desc added
Browse files Browse the repository at this point in the history
  • Loading branch information
onurkanbakirci committed Dec 17, 2023
1 parent 113e1de commit f1d169f
Show file tree
Hide file tree
Showing 6 changed files with 357 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,30 @@
namespace Integration.Marketplaces.Trendyol.Infrastructure.ClaimIntegration;
public interface ITrendyolClaimIntegration
{
/// <summary>
/// Trendyol sisteminde iadesi oluşan siparişleri bu metod yardımıyla çekebilirsiniz.
/// </summary>
/// <param name="filterQuery"></param>
/// <returns></returns>
public Task<GetClaimsResponseModel?> GetClaimsAsync(string filterQuery);

/// <summary>
/// Deponuza iade kodu alınmadan gelen sipariş paketlerin iade talep
/// paketlerini oluşturmak için kullanabilirsiniz. Bu servis ile paket
/// oluşturduktan sonra iade paketlerini çekme servisi ile iade paketlerini
/// tekrardan çekebilirsiniz.
/// </summary>
/// <param name="createClaimRequestModel"></param>
/// <returns></returns>
public Task<bool> CreateClaimAsync(CreateClaimRequestModel createClaimRequestModel);

/// <summary>
/// Trendyol Paneli üzerinden iade siparişleri onaylama işlemini,
/// artık Trendyol API servisini kullanarakta yapabilirsiniz. Ekran
/// görüntüsünü aşağıda görebilirsiniz.
/// </summary>
/// <param name="approveClaimLineItemsRequestModel"></param>
/// <param name="claimId"></param>
/// <returns></returns>
public Task<bool> ApproveClaimLineItemsAsync(ApproveClaimLineItemsRequestModel approveClaimLineItemsRequestModel, string claimId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,33 @@ public class TrendyolClaimIntegration : TrendyolIntegrationBase, ITrendyolClaimI
public TrendyolClaimIntegration(string supplierId, string apiKey, string apiSecret, bool isInProduction, string entegratorFirm) : base(supplierId, apiKey, apiSecret, isInProduction, entegratorFirm)
{
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="filterQuery"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<GetClaimsResponseModel?> GetClaimsAsync(string filterQuery)
{
return await InvokeRequestAsync<GetClaimsResponseModel>((client) => client.GetAsync(GetClaimsUrl() + filterQuery));
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="createClaimRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> CreateClaimAsync(CreateClaimRequestModel createClaimRequestModel)
{
return await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetCreateClaimUrl(), requestBody), createClaimRequestModel);
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="approveClaimLineItemsRequestModel"><inheritdoc/></param>
/// <param name="claimId"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> ApproveClaimLineItemsAsync(ApproveClaimLineItemsRequestModel approveClaimLineItemsRequestModel, string claimId)
{
return await InvokeRequestAsync((client, requestBody) => client.PutAsync(GetApproveClaimLineItemUrl(claimId), requestBody), approveClaimLineItemsRequestModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,110 @@ namespace Integration.Marketplaces.Trendyol.Infrastructure.OrderIntegration;

public interface ITrendyolPackageIntegration
{
/// <summary>
/// Trendyol sistemine ilettiğiniz ürünler ile planlanın butik sonrası
/// müşteriler tarafından verilen ve ödeme kontrolünde olan her siparişin
/// bilgisini bu method yardımıyla alabilirsiniz. Sistem tarafından ödeme
/// kontrolünden sonra otomatik paketlenerek sipariş paketleri oluşturulur.
/// </summary>
/// <param name="filterQuery"></param>
/// <returns></returns>
Task<GetShipmentPackagesResponseModel?> GetShipmentPackagesAsync(string filterQuery);

/// <summary>
/// Bu method herhangi bir paket için çağırıldığında, artık
/// Trendyol’un anlaşması üzerinden olan paket değil, tedarikçinin
/// kendi anlaşması üzerinden yaptığı gönderinin durumu sorgulanmaya
/// başlar ve Yola Çıktı, Teslim Edildi, Teslim Edilemedi bilgileri
/// entegrasyon üzerinden alınır ve takip edilir.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="updateTrackingNumberRequestModel"></param>
/// <returns></returns>
Task<bool> UpdateTrackingNumberAsync(long shipmentPackageId, UpdateTrackingNumberRequestModel updateTrackingNumberRequestModel);

/// <summary>
/// Oluşturularan sipariş paketinin faturasının kesilmesi işleminin Trendyol’a
/// bildirilebilmesi için kullanılır. Fatura kesme işleminin bildirilmesi,
/// Trendyol Müşteri Hizmetlerine ulaşan, müşteri kaynaklı iptallerin önlenmesi
/// için bir referanstır.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="updatePackageRequestModel"></param>
/// <returns></returns>
Task<bool> UpdatePackageAsync(long shipmentPackageId, UpdatePackageRequestModel updatePackageRequestModel);

/// <summary>
/// Tedarikçi tarafından kendi sisteminde yaratılmış e-Arşiv ya da
/// e-Fatura bilgisinin LİNK detayını Trendyol sistemine transfer etmek
/// için bu method kullanılacaktır.
/// </summary>
/// <param name="addInvoiceLinkRequestModel"></param>
/// <returns></returns>
Task<bool> SendInvoiceLinkAsync(AddInvoiceLinkRequestModel addInvoiceLinkRequestModel);

/// <summary>
/// Daha önce hatalı beslenen faturalar bu servis üzerinden silinip, fatura
/// linki gönderme servisi ile tekrar beslenebilmektedir.
/// </summary>
/// <param name="deleteInvoiceLinkRequestModel"></param>
/// <returns></returns>
Task<bool> DeleteInvoiceLinkAsync(DeleteInvoiceLinkRequestModel deleteInvoiceLinkRequestModel);

/// <summary>
/// Bu servis ile Trendyol üzerinde oluşmuş siparişlerinizi birden fazla
/// paket haline getirebilirsiniz. Bu servisi kulandıktan sonra sipariş
/// numarasına bağlı yeni paketler "UnPacked" statüsünde, asenkron olarak
/// oluşacaktır. Bu nedenle Sipariş Paketlerini Çekme servisinden tekrar
/// güncel paketleri çekmelisiniz.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="splitMultiPackageByQuantityRequestModel"></param>
/// <returns></returns>
Task<bool> SplitMultiPackageByQuantityAsync(long shipmentPackageId, SplitMultiPackageByQuantityRequestModel splitMultiPackageByQuantityRequestModel);

/// <summary>
/// Bu servis ile Trendyol üzerinde oluşmuş siparişlerinizi birden fazla
/// paket haline getirebilirsiniz. Bu servisi kulandıktan sonra sipariş
/// numarasına bağlı yeni paketler "UnPacked" statüsünde, asenkron olarak
/// oluşacaktır. Bu nedenle Sipariş Paketlerini Çekme servisinden tekrar
/// güncel paketleri çekmelisiniz.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="splitMultiShipmentPackageRequestModel"></param>
/// <returns></returns>
Task<bool> SplitMultiShipmentPackageAsync(long shipmentPackageId, SplitMultiShipmentPackageRequestModel splitMultiShipmentPackageRequestModel);

/// <summary>
/// Bu servis ile Trendyol üzerinde oluşmuş siparişlerinizi birden fazla
/// paket haline getirebilirsiniz. Bu servisi kulandıktan sonra sipariş
/// numarasına bağlı yeni paketler "UnPacked" statüsünde, asenkron olarak
/// oluşacaktır. Bu nedenle Sipariş Paketlerini Çekme servisinden tekrar
/// güncel paketleri çekmelisiniz.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="splitShipmentPackageRequestModel"></param>
/// <returns></returns>
Task<bool> SplitShipmentPackageAsync(long shipmentPackageId, SplitShipmentPackageRequestModel splitShipmentPackageRequestModel);

/// <summary>
/// Bu servis ile Trendyol üzerinde oluşmuş siparişlerinizi birden fazla
/// paket haline getirebilirsiniz. Bu servisi kulandıktan sonra sipariş
/// numarasına bağlı yeni paketler "UnPacked" statüsünde, asenkron olarak
/// oluşacaktır. Bu nedenle Sipariş Paketlerini Çekme servisinden tekrar
/// güncel paketleri çekmelisiniz.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="splitMultiPackageByQuantityRequestModel"></param>
/// <returns></returns>
Task<bool> SplitShipmentPackageByQuantityAsync(long shipmentPackageId, SplitMultiPackageByQuantityRequestModel splitMultiPackageByQuantityRequestModel);

/// <summary>
/// Bu servis ile Horoz ve CEVA Lojistik firmalarına ait sipariş paketleriniz
/// için desi ve koli bilgisi besleyebilirsiniz.
/// </summary>
/// <param name="shipmentPackageId"></param>
/// <param name="updateBoxInfoRequestModel"></param>
/// <returns></returns>
Task<bool> UpdateBoxInfoAsync(long shipmentPackageId, UpdateBoxInfoRequestModel updateBoxInfoRequestModel);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,66 +20,124 @@ public TrendyolPackageIntegration(string supplierId, string apiKey, string apiSe
{
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="filterQuery"></param>
/// <returns><inheritdoc/></returns>
public async Task<GetShipmentPackagesResponseModel?> GetShipmentPackagesAsync(string filterQuery)
{
return await InvokeRequestAsync<GetShipmentPackagesResponseModel?>((client) => client.GetAsync(GetShipmentPackagesUrl() + filterQuery));
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="updateTrackingNumberRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> UpdateTrackingNumberAsync(long shipmentPackageId, UpdateTrackingNumberRequestModel updateTrackingNumberRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PutAsync(GetUpdateTrackingNumberUrl(shipmentPackageId), requestBody), updateTrackingNumberRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="updatePackageRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> UpdatePackageAsync(long shipmentPackageId, UpdatePackageRequestModel updatePackageRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PutAsync(GetUpdatePackageUrl(shipmentPackageId), requestBody), updatePackageRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="addInvoiceLinkRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> SendInvoiceLinkAsync(AddInvoiceLinkRequestModel addInvoiceLinkRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetAddInvoiceLinkUrl(), requestBody), addInvoiceLinkRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="deleteInvoiceLinkRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> DeleteInvoiceLinkAsync(DeleteInvoiceLinkRequestModel deleteInvoiceLinkRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetDeleteInvoiceLinkUrl(), requestBody), deleteInvoiceLinkRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="splitMultiPackageByQuantityRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> SplitMultiPackageByQuantityAsync(long shipmentPackageId, SplitMultiPackageByQuantityRequestModel splitMultiPackageByQuantityRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetSplitMultiPackageByQuantityUrl(shipmentPackageId), requestBody), splitMultiPackageByQuantityRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="splitMultiShipmentPackageRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> SplitMultiShipmentPackageAsync(long shipmentPackageId, SplitMultiShipmentPackageRequestModel splitMultiShipmentPackageRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetSplitMultiShipmentPackageUrl(shipmentPackageId), requestBody), splitMultiShipmentPackageRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="splitShipmentPackageRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> SplitShipmentPackageAsync(long shipmentPackageId, SplitShipmentPackageRequestModel splitShipmentPackageRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetSplitShipmentPackageUrl(shipmentPackageId), requestBody), splitShipmentPackageRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="splitMultiPackageByQuantityRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> SplitShipmentPackageByQuantityAsync(long shipmentPackageId, SplitMultiPackageByQuantityRequestModel splitMultiPackageByQuantityRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetSplitShipmentPackageByQuantityUrl(shipmentPackageId), requestBody), splitMultiPackageByQuantityRequestModel);

return true;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="shipmentPackageId"><inheritdoc/></param>
/// <param name="updateBoxInfoRequestModel"><inheritdoc/></param>
/// <returns><inheritdoc/></returns>
public async Task<bool> UpdateBoxInfoAsync(long shipmentPackageId, UpdateBoxInfoRequestModel updateBoxInfoRequestModel)
{
var response = await InvokeRequestAsync((client, requestBody) => client.PostAsync(GetUpdateBoxInfoUrl(shipmentPackageId), requestBody), updateBoxInfoRequestModel);
Expand Down
Loading

0 comments on commit f1d169f

Please sign in to comment.