پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کلاس ViewModel را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
کلاس HomePageViewModel
کلاس: HomePageViewModel
csharp
public class HomePageViewModel
{
public List<SliderDto> Sliders { get; set; }
public List<HomePageImagesDto> PageImages { get; set; }
public List<ProductForSiteDto> Camera { get; set; }
public List<ProductForSiteDto> Mobile { get; set; }
public List<ProductForSiteDto> Laptop { get; set; }
}
این کلاس یک ViewModel است که به منظور انتقال دادهها از کنترلر به ویو در صفحه اصلی استفاده میشود. ViewModel ها معمولاً برای تجمیع دادههایی که از مدلهای مختلف بدست میآیند، استفاده میشوند تا دادهها به صورت ساختاریافته به ویو ارسال شوند. کلاس HomePageViewModel دارای پنج ویژگی است که هرکدام لیستی از DTOهای مختلف را نگهداری میکند.
توضیح ویژگیها:
Sliders:
نوع: List<SliderDto>
توضیح: این ویژگی یک لیست از SliderDto را نگهداری میکند که شامل اطلاعات مربوط به اسلایدرهای صفحه اصلی است.
PageImages:
نوع: List<HomePageImagesDto>
توضیح: این ویژگی یک لیست از HomePageImagesDto را نگهداری میکند که شامل اطلاعات مربوط به تصاویر صفحه اصلی است.
Camera:
نوع: List<ProductForSiteDto>
توضیح: این ویژگی یک لیست از ProductForSiteDto را نگهداری میکند که شامل اطلاعات مربوط به محصولات دستهبندی دوربینها است.
Mobile:
نوع: List<ProductForSiteDto>
توضیح: این ویژگی یک لیست از ProductForSiteDto را نگهداری میکند که شامل اطلاعات مربوط به محصولات دستهبندی موبایلها است.
Laptop:
نوع: List<ProductForSiteDto>
توضیح: این ویژگی یک لیست از ProductForSiteDto را نگهداری میکند که شامل اطلاعات مربوط به محصولات دستهبندی لپتاپها است.
نتیجهگیری
این ViewModel برای انتقال دادههای صفحه اصلی از کنترلر به ویو استفاده میشود. ویژگیهای این کلاس شامل لیستهایی از اسلایدرها، تصاویر صفحه اصلی و محصولات در دستهبندیهای مختلف است. این روش به شما امکان میدهد که دادهها را به صورت سازمانیافته و ساختاریافته به ویو ارسال کنید و از آنها برای نمایش اطلاعات در صفحه اصلی استفاده کنید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این کد کنترلر HomeController را بررسی و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
کلاس HomeController
کلاس: HomeController
csharp
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IGetSliderService _getSliderService;
private readonly IGetHomePageImagesService _homePageImagesService;
private readonly IProductFacad _productFacad;
public HomeController(ILogger<HomeController> logger
, IGetSliderService getSliderService
, IGetHomePageImagesService homePageImagesService
, IProductFacad productFacad)
{
_logger = logger;
_getSliderService = getSliderService;
_homePageImagesService = homePageImagesService;
_productFacad = productFacad;
}
public IActionResult Index()
{
HomePageViewModel homePage = new HomePageViewModel()
{
Sliders = _getSliderService.Execute().Data,
PageImages = _homePageImagesService.Execute().Data,
Camera = _productFacad.GetProductForSiteService.Execute(Ordering.theNewest
, null, 1, 6, 25).Data.Products,
};
return View(homePage);
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
توضیح بخشهای مختلف کلاس:
اعضای خصوصی (private)
ILogger<HomeController> _logger:
این عضو برای لاگگیری و ثبت رویدادها استفاده میشود.
IGetSliderService _getSliderService: این عضو برای دریافت اسلایدرهای صفحه اصلی استفاده میشود.
IGetHomePageImagesService _homePageImagesService:
این عضو برای دریافت تصاویر صفحه اصلی استفاده میشود.
IProductFacad _productFacad:
این عضو برای دریافت محصولات صفحه اصلی استفاده میشود.
سازنده HomeController
csharp
public HomeController(ILogger<HomeController> logger
, IGetSliderService getSliderService
, IGetHomePageImagesService homePageImagesService
, IProductFacad productFacad)
{
_logger = logger;
_getSliderService = getSliderService;
_homePageImagesService = homePageImagesService;
_productFacad = productFacad;
}
این سازنده فیلدهای خصوصی را مقداردهی میکند:
هدف: تزریق وابستگیها (Dependency Injection) و فراهم کردن استفاده از سرویسها و لاگگیری.
اکشن Index
csharp
public IActionResult Index()
{
HomePageViewModel homePage = new HomePageViewModel()
{
Sliders = _getSliderService.Execute().Data,
PageImages = _homePageImagesService.Execute().Data,
Camera = _productFacad.GetProductForSiteService.Execute(Ordering.theNewest
, null, 1, 6, 25).Data.Products,
};
return View(homePage);
}
این متد یک اکشن است که ویوی مربوط به صفحه اصلی را باز میکند:
ایجاد ViewModel صفحه اصلی: دادههای اسلایدرها، تصاویر صفحه اصلی و محصولات (دوربینها) را از سرویسهای مختلف دریافت میکند و در یک ViewModel قرار میدهد.
بازگرداندن ویو: ViewModel صفحه اصلی را به ویو ارسال میکند.
هدف: نمایش دادههای صفحه اصلی به کاربر.
اکشن Privacy
csharp
public IActionResult Privacy()
{
return View();
}
این متد یک اکشن است که ویوی مربوط به صفحه حریم خصوصی را باز میکند:
هدف: نمایش صفحه حریم خصوصی.
اکشن Error
csharp
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
این متد یک اکشن است که در صورت بروز خطا اجرا میشود:
عدم کشسازی پاسخ: استفاده از ResponseCache برای جلوگیری از کشسازی پاسخ.
ایجاد مدل خطا: ایجاد یک شیء ErrorViewModel با شناسه درخواست (RequestId).
بازگرداندن ویو: بازگرداندن ویو خطا همراه با مدل خطا.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
نتیجهگیری
این کنترلر به مدیریت صفحات اصلی سایت میپردازد. شامل اکشنهایی برای نمایش صفحه اصلی، صفحه حریم خصوصی و صفحه خطا میباشد. این کنترلر از سرویسهای مختلف برای دریافت دادههای مربوط به اسلایدرها، تصاویر صفحه اصلی و محصولات استفاده میکند و این دادهها را به ویو ارسال میکند تا به کاربر نمایش داده شوند.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
بیایید این بخش از کد ویو Razor برای صفحه اصلی را بررسی کنیم و توضیح دهیم که هر بخش آن چه وظیفهای دارد.
توضیح کد
۱. بخش اسلایدر (slider-box)
کد:
html
<div class="slider-box">
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
@for (int i = 1; i <= Model.Sliders.Count - 1; i++)
{
<li data-target="#carouselExampleIndicators" data-slide-to="@i" ></li>
}
</ol>
<div class="carousel-inner">
@foreach (var item in Model.Sliders)
{
if (_sliderCount == 1)
{
<div class="carousel-item active">
<a href="@item.Link">
<img src="~/@item.Src" class="d-block w-100" alt="...">
</a>
</div>
}
else
{
<div class="carousel-item">
<a href="@item.Link">
<img src="~/@item.Src" class="d-block w-100" alt="...">
</a>
</div>
}
_sliderCount++;
}
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="fa fa-angle-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="fa fa-angle-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
توضیح:
ساختار کلی اسلایدر: استفاده از کلاسهای carousel و carousel slide برای ایجاد یک اسلایدر با استفاده از Bootstrap.
carousel-indicators:
نمایش نقاط نمایانگر که نشاندهنده تعداد اسلایدها هستند.
لیست نقاط: استفاده از یک حلقه for برای ایجاد نقاط به ازای تعداد اسلایدها.
carousel-inner: شامل تمام اسلایدها.
@foreach: حلقهای برای ایجاد هر اسلاید.
بررسی اولین اسلاید: اگر اولین اسلاید است، کلاس active به آن اضافه میشود.
تصویر اسلاید: نمایش تصویر هر اسلاید با استفاده از مسیر Src و لینک مرتبط با آن.
۲. نمایش تصاویر تبلیغاتی
کد:
html
<div class="col-lg-3 col-md-4 col-xs-12 pl mt-1">
<div class="adplacement-container-column">
<a href="#" class="adplacement-item">
<div class="adplacement-sponsored-box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.L1)?.FirstOrDefault()?.Src ?? '' ">
</div>
</a>
<a href="#" class="adplacement-item">
<div class="adplacement-sponsored-box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.L2)?.FirstOrDefault()?.Src ?? ''">
</div>
</a>
</div>
</div>
توضیح:
نمایش تصاویر تبلیغاتی در مکانهای L1 و L2:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصاویری که محل قرارگیری آنها ImageLocation.L1 و ImageLocation.L2 باشد.
اولین تصویر مناسب: استفاده از FirstOrDefault برای انتخاب اولین تصویر که معیار را برآورده میکند.
مسیر تصویر: استفاده از خاصیت Src برای نمایش تصویر.
۳. بنر تصویر مرکز تمام صفحه
کد:
html
<div class="-container-column mt-4">
<a href="#" class="adplacement-item img-banner">
<div class="adplacement-sponsored-box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.R1)?.FirstOrDefault()?.Src ?? ''">
</div>
</a>
</div>
توضیح:
نمایش تصویر در مکان R1:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصویری که محل قرارگیری آن ImageLocation.R1 باشد.
اولین تصویر مناسب: استفاده از FirstOrDefault برای انتخاب اولین تصویر که معیار را برآورده میکند.
مسیر تصویر: استفاده از خاصیت Src برای نمایش تصویر.
پروژه ASP.Net Core MVC (وب و سی شارپ)
در این بخش صفحه اصلی پویا
۴. اسلایدر دوربین عکاسی
کد:
html
<div class="one-slider">
<h4>دوربین عکاسی</h4>
<div class="owl-carousel owl-theme ov1">
@foreach (var item in Model.PageImages.Where(p => p.ImageLocation == ImageLocation.G1).ToList())
{
<div class="item">
<figure>
<a href=""><img src="~/@item.Src" class="w-100" /></a>
</figure>
<h5>Adata d5-32G</h5>
<span>112.000 تومان</span>
</div>
}
</div>
</div>
توضیح:
اسلایدر محصولات دوربین عکاسی:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصاویری که محل قرارگیری آنها ImageLocation.G1 باشد.
حلقه @foreach: ایجاد اسلایدها به ازای هر تصویر فیلتر شده.
نمایش تصویر: استفاده از خاصیت Src برای نمایش تصویر.
نمایش نام و قیمت محصول: نمایش نمونهای از نام و قیمت محصول به صورت استاتیک.
۵. بنر تصویر تمام صفحه مرکزی
کد:
html
<div class="col-12">
<a href="#" class="adplacement-item mb-4">
<div class="adplacement-sponsored_box">
<img src="~/@Model.PageImages.Where(p => p.ImageLocation == ImageLocation.CenterFullScreen)?.FirstOrDefault()?.Src ?? ''">
</div>
</a>
</div>
توضیح:
نمایش تصویر در مکان CenterFullScreen:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصویری که محل قرارگیری آن ImageLocation.CenterFullScreen باشد.
اولین تصویر مناسب: استفاده از FirstOrDefault برای انتخاب اولین تصویر که معیار را برآورده میکند.
مسیر تصویر: استفاده از خاصیت Src برای نمایش تصویر.
۶. اسلایدر محصولات موبایل و تبلت
کد:
html
<div class="two-slider">
<h4>موبایل و تبلت</h4>
<div class="owl-carousel owl-theme ov2">
@foreach (var item in Model.PageImages.Where(p => p.ImageLocation == ImageLocation.G2).ToList())
{
<div class="item">
<figure>
<a href=""><img src="~/@item.Src" class="w-100" /></a>
</figure>
<h5>Adata d5-32G</h5>
<span>112.000 تومان</span>
</div>
}
</div>
</div>
توضیح:
اسلایدر محصولات موبایل و تبلت:
فیلتر کردن تصاویر: استفاده از LINQ برای انتخاب تصاویری که محل قرارگیری آنها ImageLocation.G2 باشد.
حلقه @foreach: ایجاد اسلایدها به ازای هر تصویر فیلتر شده.
نمایش تصویر: استفاده از خاصیت Src برای نمایش تصویر.
نمایش نام و قیمت محصول: نمایش نمونهای از نام و قیمت محصول به صورت استاتیک.
نتیجهگیری
این کد ویو برای صفحه اصلی شامل نمایش اسلایدر اصلی، تصاویر تبلیغاتی و بنرها، و اسلایدرهای محصولات مختلف است. از کلاسهای Bootstrap و Owl Carousel برای استایلدهی و ایجاد کاروسلها استفاده میکند. دادهها از مدل ViewModel دریافت میشوند و به صورت داینامیک در صفحه نمایش داده میشوند.
Test_Store 14.zip
حجم:
56.5M
ادامه درس بخش صفحه اصلی پویا
که خودم اعتبار سنجی کردم بدونه کمک استاد که دیگران نگویند پروژه خطا میده
کوکی cookie
سلام! بیایید ابتدا توضیح دهیم که کوکی چیست و سپس نحوه استفاده از کوکیها در ASP.NET را بررسی کنیم.
کوکی چیست؟
کوکی یک فایل کوچک متنی است که توسط وبسایتها در مرورگر کاربر ذخیره میشود. این فایلها شامل اطلاعاتی مانند تنظیمات کاربر، وضعیت نشست (session)، و شناسههای کاربری هستند. کوکیها برای ذخیرهسازی اطلاعات کاربر بین درخواستهای مختلف به سرور استفاده میشوند.
نحوه استفاده از کوکیها در ASP.NET
۱. ایجاد و تنظیم کوکی
برای ایجاد و تنظیم یک کوکی در ASP.NET، میتوان از شیء HttpCookie استفاده کرد و سپس آن را به پاسخ HTTP اضافه کرد.
نمونه کد:
csharp
public ActionResult SetCookie()
{
HttpCookie cookie = new HttpCookie("UserPreferences");
cookie["Theme"] = "Dark";
cookie["Font"] = "Arial";
cookie.Expires = DateTime.Now.AddDays(7); // زمان انقضای کوکی (مثلاً ۷ روز)
Response.Cookies.Add(cookie);
return RedirectToAction("Index");
}
۲. خواندن کوکی
برای خواندن یک کوکی در ASP.NET، میتوان از شیء HttpRequest و مجموعه Request.Cookies استفاده کرد.
نمونه کد:
csharp
public ActionResult GetCookie()
{
HttpCookie cookie = Request.Cookies["UserPreferences"];
if (cookie != null)
{
string theme = cookie["Theme"];
string font = cookie["Font"];
ViewBag.Theme = theme;
ViewBag.Font = font;
}
return View();
}
۳. حذف کوکی
برای حذف یک کوکی، باید تاریخ انقضای کوکی را به گذشته تنظیم کنید. این کار باعث میشود که مرورگر کوکی را حذف کند.
نمونه کد:
csharp
public ActionResult RemoveCookie()
{
if (Request.Cookies["UserPreferences"] != null)
{
HttpCookie cookie = new HttpCookie("UserPreferences");
cookie.Expires = DateTime.Now.AddDays(-1); // تاریخ انقضا به گذشته تنظیم شده
Response.Cookies.Add(cookie);
}
return RedirectToAction("Index");
}
گزینههای کوکی (Cookie Options)
هنگام ایجاد یک کوکی، میتوان گزینههای مختلفی را تنظیم کرد مانند زمان انقضا، دامنه، مسیر، و امنیت.
نمونه کد با گزینههای کوکی:
csharp
public ActionResult SetCookieWithOptions()
{
HttpCookie cookie = new HttpCookie("UserPreferences")
{
["Theme"] = "Dark",
["Font"] = "Arial",
Expires = DateTime.Now.AddDays(7), // زمان انقضای کوکی (مثلاً ۷ روز)
Path = "/", // مسیر کوکی
Domain = "example.com", // دامنه کوکی
Secure = true, // فقط از طریق HTTPS
HttpOnly = true // فقط از طریق HTTP، دسترسی جاوااسکریپت محدود
};
Response.Cookies.Add(cookie);
return RedirectToAction("Index");
}
نتیجهگیری
با استفاده از این روشها، میتوانید کوکیها را در ASP.NET مدیریت کنید. کوکیها ابزاری قوی برای ذخیره اطلاعات کاربر در مرورگر هستند و میتوانند تجربه کاربری بهتری را فراهم کنند.
اگر به یک کوکی تاریخ انقضا ندهید، به طور پیشفرض به عنوان یک کوکی نشست (session cookie) در نظر گرفته میشود. این بدان معناست که کوکی تا زمانی که مرورگر باز باشد معتبر خواهد بود و هنگامی که مرورگر بسته شود، کوکی به طور خودکار حذف میشود.
نمونه کد:
csharp
public ActionResult SetCookieWithoutExpiration()
{
HttpCookie cookie = new HttpCookie("UserPreferences");
cookie["Theme"] = "Dark";
cookie["Font"] = "Arial";
// تاریخ انقضا تنظیم نمیشود، بنابراین به عنوان کوکی نشست در نظر گرفته میشود
Response.Cookies.Add(cookie);
return RedirectToAction("Index");
}
در این مثال، کوکیای که ایجاد شده است تا زمانی که مرورگر باز باشد معتبر خواهد بود و پس از بستن مرورگر، کوکی حذف میشود.
Test_Store 15.zip
حجم:
56.9M
افزودن به سبد خرید قسمت اول
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
این کد مربوط به سرویس سبد خرید (CartService) در یک فروشگاه اینترنتی است. سرویس سبد خرید شامل عملکردهایی برای اضافه کردن محصول به سبد خرید، حذف محصول از سبد خرید، دریافت سبد خرید کاربر، افزایش تعداد یک محصول در سبد خرید و کاهش تعداد یک محصول در سبد خرید میباشد. بیایید نگاهی دقیقتر به عملکردهای مختلف این سرویس بیندازیم:
تعریف Interface (رابط) ICartService
csharp
public interface ICartService
{
ResultDto AddToCart(long ProductId, Guid BrowserId);
ResultDto RemoveFromCart(long ProductId, Guid BrowserId);
ResultDto<CartDto> GetMyCart(Guid BrowserId);
ResultDto Add(long CartItemId);
ResultDto LowOff(long CartItemId);
}
کلاس CartService
سازنده و زمینههای کلاس
csharp
public class CartService : ICartService
{
private readonly IDataBaseContext _context;
public CartService(IDataBaseContext context)
{
_context = context;
}
IDataBaseContext
از پایگاه داده استفاده میکند و عملیاتهای دادهای را فراهم میکند.
سازنده کلاس، نمونهای از IDataBaseContext را دریافت کرده و آن را در متغیر _context ذخیره میکند.
افزودن محصول به سبد خرید
csharp
public ResultDto AddToCart(long ProductId, Guid BrowserId)
{
var cart = _context.Carts.Where(p => p.BrowserId == BrowserId && p.Finished == false).FirstOrDefault();
if (cart == null)
{
Cart newCart = new Cart()
{
Finished = false,
BrowserId = BrowserId,
};
_context.Carts.Add(newCart);
_context.SaveChanges();
cart = newCart;
}
var product = _context.Products.Find(ProductId);
var cartItem = _context.CartItems.Where(p => p.ProductId == ProductId && p.CartId == cart.Id).FirstOrDefault();
if (cartItem != null)
{
cartItem.Count++;
}
else
{
CartItem newCartItem = new CartItem()
{
Cart = cart,
Count = 1,
Price = product.Price,
Product = product,
};
_context.CartItems.Add(newCartItem);
_context.SaveChanges();
}
return new ResultDto()
{
IsSuccess = true,
Message = $"محصول {product.Name} با موفقیت به سبد خرید شما اضافه شد",
};
}
ابتدا بررسی میشود که آیا سبد خریدی برای کاربر موجود است یا نه. اگر سبد خریدی وجود ندارد، یک سبد خرید جدید ایجاد میشود.
سپس محصول مورد نظر در پایگاه داده جستجو میشود.
اگر محصولی با شناسه مورد نظر در سبد خرید وجود داشته باشد، تعداد آن افزایش مییابد. در غیر این صورت، محصول جدیدی به سبد خرید اضافه میشود.
افزایش تعداد یک محصول در سبد خرید
csharp
public ResultDto Add(long CartItemId)
{
var cartItem = _context.CartItems.Find(CartItemId);
cartItem.Count++;
_context.SaveChanges();
return new ResultDto()
{
IsSuccess = true,
};
}
محصول مورد نظر در سبد خرید بر اساس CartItemId جستجو میشود و تعداد آن افزایش مییابد.
کاهش تعداد یک محصول در سبد خرید
csharp
public ResultDto LowOff(long CartItemId)
{
var cartItem = _context.CartItems.Find(CartItemId);
if (cartItem.Count <= 1)
{
return new ResultDto()
{
IsSuccess = false,
};
}
cartItem.Count--;
_context.SaveChanges();
return new ResultDto()
{
IsSuccess = true,
};
}
محصول مورد نظر در سبد خرید بر اساس CartItemId جستجو میشود و تعداد آن کاهش مییابد. اگر تعداد محصول کمتر یا برابر با ۱ باشد، عملیات کاهش ناموفق خواهد بود.
پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن به سبد خرید قسمت اول
دریافت سبد خرید کاربر
csharp
public ResultDto<CartDto> GetMyCart(Guid BrowserId)
{
var cart = _context.Carts
.Include(p => p.CartItems)
.ThenInclude(p => p.Product)
.ThenInclude(p => p.ProductImages)
.Where(p => p.BrowserId == BrowserId && p.Finished == false)
.OrderByDescending(p => p.Id)
.FirstOrDefault();
return new ResultDto<CartDto>()
{
Data = new CartDto()
{
CartItems = cart.CartItems.Select(p => new CartItemDto
{
Count = p.Count,
Price = p.Price,
Product = p.Product.Name,
Id = p.Id,
Images = p.Product?.ProductImages?.FirstOrDefault()?.Src ?? "",
}).ToList(),
},
IsSuccess = true,
};
}
سبد خرید کاربر بر اساس BrowserId جستجو میشود و لیستی از محصولات موجود در سبد خرید همراه با اطلاعات آنها برگردانده میشود.
حذف محصول از سبد خرید
csharp
public ResultDto RemoveFromCart(long ProductId, Guid BrowserId)
{
var cartitem = _context.CartItems.Where(p => p.Cart.BrowserId == BrowserId).FirstOrDefault();
if (cartitem != null)
{
cartitem.IsRemoved = true;
cartitem.RemoveTime = DateTime.Now;
_context.SaveChanges();
return new ResultDto
{
IsSuccess = true,
Message = "محصول از سبد خرید شما حذف شد"
};
}
else
{
return new ResultDto
{
IsSuccess = false,
Message = "محصول یافت نشد"
};
}
}
محصول مورد نظر بر اساس ProductId و BrowserId جستجو میشود و سپس از سبد خرید حذف میشود.
کلاسهای DTO
CartDto و CartItemDto
این کلاسها برای انتقال دادههای سبد خرید و آیتمهای سبد خرید استفاده میشوند.
csharp
public class CartDto
{
public List<CartItemDto> CartItems { get; set; }
}
public class CartItemDto
{
public long Id { get; set; }
public string Product { get; set; }
public string Images { get; set; }
public int Count { get; set; }
public int Price { get; set; }
}
CartDto
شامل لیستی از CartItemDto است که اطلاعات مربوط به محصولات موجود در سبد خرید را نگهداری میکند.
نتیجهگیری
این کد شامل عملیاتی برای مدیریت سبد خرید در یک فروشگاه اینترنتی است. هر عملیاتی مانند افزودن محصول به سبد خرید، حذف محصول، افزایش و کاهش تعداد محصول و دریافت سبد خرید کاربر به طور کامل پیادهسازی شده است.