Closed tolgacakir closed 8 months ago
Amaç: requestte hata varsa örn. "deliveryCode boş bırakılırsa" isteğin hatalı olduğunu döndürmek ve sunucunun bu isteği işlemeyeceğini belirtmek.(#16)
if (!_delivery.Contains(delivery))
yukarıdaki koddan anladığım şu: mevcut delivery'ler içerisinde, requestten gelen delivery yoksa...
zaten yeni bir delivery create edeceksen mevcut listede bu olmamalı diye düşünüyorum. tam tersi eğer create edeceğin delivery zaten varsa http 409 hatası vermen lazım. aynı delivery'nin 1den fazla kez kaydedilmemesi için. (business hatası var burada)
konu da şu, yukarıdaki karşılaştırma referansları karşılaştırır. yani diyelim ki aynı deliveryCode'a sahip başka bir delivery var liste içerisinde, sen de requestten yeni bir delivery aldın (aynı deliveryCode'a sahip) burada contains methodu false döner çünkü iki nesnenin referansları farklı.
yani diyelim ki 1. konuyu düzelttin, burada ayrıca bir implementasyon problemi var.
bu 2. konuyla alakalı reference types, value types konularını araştır istersen.
son olarak şöyle bi case vereyim burası için. 1. maddedeki business: eğer requestten gelen delivery, mevcut listede (veya db'de) zaten varsa burada http 409 hatası dönelim.
Düzelt: Contains methodu yerine Any methodu kullanıldı ve karşılaştırma deliveryCode'a göre ayarlandı.Http Status Code 409 dönmesi sağlandı.(#16)
güzel (y) sadece else methoduna gerek yok early return yaptığın için
https://github.com/bgbl1/webapi-deneme/blob/a132fda9182a9e2bb6f9a05ae71ad9c9b47c0643/bynrcargo.Api/bynrcargo.Api/Controllers/DeliveryController.cs#L38