ASP NET CORE RAZOR PAGE BAKIM TEKNİK SERVİS PROJESİ 039 BAKIM HİZMETİ ONPOST HANDLER METODU

Bu dersimizde yapılan bakımlara ilişkin bakım hizmeti sonucunda oluşturduğumuz Create sayfasının pagemodel tarafında OnPostAsync metodumuzu yazacağız. Buna ilaveten ya bu derste ya da bir sonraki derste bakım hizmeti için düşündüğümüz sepet mantığında kart demiştik oraya da bakım paketinin içindeki alt işlerin eklenmesini sağlayan metodumuzu yazarız.

Dersin detaylı anlatımı ve kod takibi için video:

Kodlarımıza geçelim:

public async Task< IActionResult> OnPostAsync()
        {
            if (ModelState.IsValid)
            {
                CarServiceVM.ServiceHeader.DateAdded = DateTime.Now;
                CarServiceVM.ServiceShoppingCart = _db.ServiceShoppingCart.Include(c => c.ServiceType).Where(c => c.CarId == CarServiceVM.Car.Id).ToList();
                foreach (var item in CarServiceVM.ServiceShoppingCart)
                {
                    CarServiceVM.ServiceHeader.TotalPrice += item.ServiceType.Price;
                }
                CarServiceVM.ServiceHeader.CarId = CarServiceVM.Car.Id;

                _db.ServiceHeader.Add(CarServiceVM.ServiceHeader);
                await _db.SaveChangesAsync();

                foreach (var detail in CarServiceVM.ServiceShoppingCart)
                {
                    ServiceDetails serviceDetails = new ServiceDetails
                    {
                        ServiceHeaderId = CarServiceVM.ServiceHeader.Id,
                        ServiceName = detail.ServiceType.Name,
                        ServicePrice = detail.ServiceType.Price,
                        ServiceTypeId = detail.ServiceTypeId
                    };

                    _db.ServiceDetails.Add(serviceDetails);

                }
                _db.ServiceShoppingCart.RemoveRange(CarServiceVM.ServiceShoppingCart);

                await _db.SaveChangesAsync();

                return RedirectToPage("../Cars/Index", new { userId = CarServiceVM.Car.UserId });
            }

            return Page();
        }

Kodlarımızı özetlersek; öncelikle yine modelstate durumunun kontrolü ile başlıyorum, eğer geçerli ise if içindeki kodlarım çalışacak. Bu kısmı özetler isek; bakım hizmetinin oluşturulma tarihi bilgisini DateTime.Now ile alıyorum. Ayrıca bakım içinde yer alan bakım tiplerini bakim hizmeti içeriğini barındıran kart içinde tutuyorum. Yani bu kısım aslında bizim sepetimiz. Bu kart içinde yani sepet içinde yer alan bakım tipleirnin toplam fiyatını bulmak için foreach döngüsü ile sepet yani kart içinde döndük. Bu bilgileri daha sonra database tarafına yolluyorum. İkinci foreach ile başlayan kısımda da bakım himetine ilişkin detay bilgileri yine sepetimizden yani kartımızdan alıp kontrol ettiğimiz ve bunları database tarafına yansıttığımız kısım oluyor.

Henüz tasarım tarafımız bitmediği için kontrol hususunu daha sonra gerçekleştireceğiz. Bir sonraki derste görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir