Files
Soroush Asadi f97f891d67
CI/CD / CI — dotnet build (push) Successful in 44s
CI/CD / Deploy — docker compose (push) Failing after 1s
Initial commit — AsadiTools v1.0
Full ASP.NET Core 10 Razor Pages app for آساد ابزار tool repair shop
in Karaj, Iran (official DeWalt representative).

Features:
- Homepage, Services, DeWalt page, Shop (pagination + images)
- 10 brand SEO pages (/brands/*) with rich Persian content + FAQ schema
- Blog engine with admin management (/blog, /Admin/Blog)
- Cart, Checkout, Contact (OpenStreetMap embed)
- Admin panel: Products CRUD, Orders, Blog, Change Password
- Jalali date formatting, product images, SiteData centralised contact
- Docker + docker-compose with healthcheck
- Gitea CI/CD via .gitea/workflows/ci-cd.yml (NuGet through Nexus mirror)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 22:08:43 +03:30

296 lines
24 KiB
C#
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using AsadiTools.Models;
using BCrypt.Net;
using Microsoft.EntityFrameworkCore;
namespace AsadiTools.Data;
public static class SeedData
{
public static void Initialize(AppDbContext db)
{
db.Database.EnsureCreated();
// SQLite schema migrations
try { db.Database.ExecuteSqlRaw("ALTER TABLE Products ADD COLUMN ImageUrl TEXT"); } catch { }
try { db.Database.ExecuteSqlRaw(@"
CREATE TABLE IF NOT EXISTS BlogPosts (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Title TEXT NOT NULL,
Slug TEXT NOT NULL,
Content TEXT NOT NULL,
Excerpt TEXT,
MetaDescription TEXT,
FeaturedImage TEXT,
Tags TEXT,
IsPublished INTEGER NOT NULL DEFAULT 0,
CreatedAt TEXT NOT NULL,
UpdatedAt TEXT NOT NULL,
PublishedAt TEXT
)"); } catch { }
if (!db.AdminUsers.Any())
{
db.AdminUsers.Add(new AdminUser
{
Username = "admin",
PasswordHash = BCrypt.Net.BCrypt.HashPassword("admin1234")
});
db.SaveChanges();
}
if (!db.BlogPosts.Any())
{
var now = DateTime.Now;
db.BlogPosts.AddRange(
new BlogPost
{
Title = "راهنمای کامل تعویض کاربن (زغال) فرز برقی",
Slug = "carbon-brush-replacement-guide",
Excerpt = "کاربن موتور یکی از مهم‌ترین قطعات مصرفی فرز برقی است. در این مقاله یاد می‌گیریم چه زمانی باید کاربن را تعویض کنیم و چطور این کار را انجام دهیم.",
MetaDescription = "راهنمای کامل تشخیص فرسودگی و تعویض کاربن فرز برقی. علائم فرسودگی، مراحل تعویض و نکات مهم برای دریل و فرز دیوالت، بوش، رونیکس.",
FeaturedImage = "https://images.unsplash.com/photo-1487452066049-a710f7296400?w=800&q=80&auto=format&fit=crop",
Tags = "تعمیر فرز,کاربن,نگهداری ابزار,دیوالت,بوش",
IsPublished = true,
PublishedAt = now.AddDays(-20),
CreatedAt = now.AddDays(-21), UpdatedAt = now.AddDays(-20),
Content = """
<h2>کاربن موتور چیست؟</h2>
<p>کاربن (یا زغال موتور) قطعهای است که با چرخش آرمیچر تماس مستقیم دارد و جریان برق را به موتور منتقل میکند. این قطعه با گذشت زمان و استفاده مداوم، کوچک میشود و نهایتاً باید تعویض شود. تعویض به موقع کاربن از آسیب جدیتر به آرمیچر جلوگیری میکند.</p>
<h2>علائم فرسودگی کاربن</h2>
<ul>
<li><strong>جرقههای زیاد داخل دستگاه:</strong> کمی جرقه طبیعی است، اما جرقه شدید و دود نشانه فرسودگی است.</li>
<li><strong>کاهش قدرت دستگاه:</strong> اگر فرز یا دریل شما ضعیفتر از قبل کار میکند، کاربن را بررسی کنید.</li>
<li><strong>گرم شدن بیش از حد:</strong> کاربنهای فرسوده اصطکاک بیشتری ایجاد میکنند.</li>
<li><strong>صدای غیرطبیعی:</strong> سر و صدای تقتق از موتور نشانه مشکل است.</li>
</ul>
<h2>زمان تعویض</h2>
<p>به طور معمول کاربنها بین <strong>۵۰ تا ۱۵۰ ساعت</strong> کار باید تعویض شوند. این مقدار بستگی به نوع ابزار، شدت کار و برند دارد. ابزارهای حرفهای مانند دیوالت و بوش معمولاً کاربنهای باکیفیتتری دارند که عمر بیشتری دارند.</p>
<h2>مراحل تعویض کاربن</h2>
<ol>
<li>ابزار را خاموش و از برق بکشید.</li>
<li>درپوش کاربن (معمولاً دو تا در دو طرف موتور) را پیدا کنید.</li>
<li>با یک پیچگوشتی درپوش را باز کنید.</li>
<li>کاربن قدیمی را بیرون بیاورید و اندازه آن را با نمونه نو مقایسه کنید.</li>
<li>کاربن جدید را داخل محفظه بگذارید مطمئن شوید جهت درست است.</li>
<li>درپوش را ببندید و دستگاه را تست کنید.</li>
</ol>
<h2>نکات مهم</h2>
<p>همیشه از <strong>کاربن اصلی</strong> همان برند استفاده کنید. کاربنهای جایگزین ارزانقیمت میتوانند به آرمیچر آسیب بزنند و هزینه تعمیر را چندین برابر کنند. آساد ابزار در کرج موجودی کامل کاربن اصلی دیوالت، بوش، ماکیتا، رونیکس و توسن را دارد.</p>
<p>اگر در هنگام تعویض کاربن متوجه آسیب به آرمیچر یا کموتاتور شدید، بدون تخصص لازم اقدام نکنید با آساد ابزار کرج تماس بگیرید: <strong>۰۲۶-۳۴۵۶۷۸۹۰</strong></p>
"""
},
new BlogPost
{
Title = "تعمیر کنیم یا نو بخریم؟ راهنمای تصمیم‌گیری هوشمند",
Slug = "repair-or-buy-new",
Excerpt = "یکی از سوالات رایج در مورد ابزار برقی این است که آیا تعمیر آن به صرفه است یا خرید نو؟ در این مقاله معیارهای کاربردی برای تصمیم‌گیری را بررسی می‌کنیم.",
MetaDescription = "راهنمای تصمیم‌گیری برای تعمیر یا خرید نو ابزار برقی. محاسبه هزینه، عمر مفید و معیارهای اقتصادی برای دریل، فرز و بتن‌کن.",
FeaturedImage = "https://images.unsplash.com/photo-1581579438747-1dc8d17bbce4?w=800&q=80&auto=format&fit=crop",
Tags = "تعمیر ابزار,خرید ابزار,راهنما,صرفه‌جویی",
IsPublished = true,
PublishedAt = now.AddDays(-14),
CreatedAt = now.AddDays(-15), UpdatedAt = now.AddDays(-14),
Content = """
<h2>قانون کلی ۵۰٪</h2>
<p>یک قاعده سرانگشتی ساده: اگر هزینه تعمیر از <strong>۵۰٪ قیمت دستگاه نو</strong> تجاوز کند، خرید نو اقتصادیتر است. البته این فقط یک نقطه شروع است و عوامل دیگری هم باید در نظر گرفته شوند.</p>
<h2>عواملی که به سود تعمیر هستند</h2>
<ul>
<li><strong>برند حرفهای:</strong> ابزارهای برندهای معتبر مانند دیوالت، هیلتی، بوش و متابو عموماً تعمیرپذیرتر هستند. بدنه مستحکم آنها سالها دوام میآورد.</li>
<li><strong>عمر کم دستگاه:</strong> اگر ابزارتان کمتر از ۳ سال عمر دارد، معمولاً تعمیر منطقیتر است.</li>
<li><strong>خرابی ساده:</strong> تعویض کاربن، بیرینگ یا کلید معمولاً بسیار مقرونبهصرفه است.</li>
<li><strong>قطعات در دسترس:</strong> اگر قطعات اصلی راحت تهیه میشوند، عمر ابزار بعد از تعمیر طولانی خواهد بود.</li>
</ul>
<h2>عواملی که به سود خرید نو هستند</h2>
<ul>
<li><strong>بدنه آسیبدیده:</strong> اگر بدنه ابزار شکسته، خورده یا تغییر شکل داده باشد.</li>
<li><strong>خرابی چندگانه:</strong> وقتی چند قطعه کلیدی همزمان آسیب دیدهاند.</li>
<li><strong>برند ارزان:</strong> برای ابزارهای بودجهای که قیمت پایینی دارند.</li>
<li><strong>قطعه ناموجود:</strong> اگر قطعه اصلی تولید نمیشود یا ماهها تأخیر دارد.</li>
</ul>
<h2>محاسبه هوشمند هزینه</h2>
<p>فرمول ساده برای تصمیمگیری:</p>
<blockquote>
اگر (هزینه تعمیر ÷ قیمت دستگاه مشابه نو) × ۱۰۰ کمتر از ۴۰٪ باشد تعمیر کنید<br>
اگر بین ۴۰٪ تا ۶۰٪ باشد به عوامل دیگر توجه کنید<br>
اگر بیشتر از ۶۰٪ باشد احتمالاً خرید نو بهتر است
</blockquote>
<p>آساد ابزار در کرج <strong>تشخیص رایگان</strong> انجام میدهد و پس از بررسی، صادقانه توصیه میکند که تعمیر مقرونبهصرفه است یا نه. با شماره <strong>۰۲۶-۳۴۵۶۷۸۹۰</strong> تماس بگیرید.</p>
"""
},
new BlogPost
{
Title = "۵ نکته طلایی برای افزایش عمر ابزار برقی",
Slug = "power-tool-maintenance-tips",
Excerpt = "نگهداری صحیح از ابزار برقی عمر آن را چند برابر می‌کند و از خرابی‌های پرهزینه جلوگیری می‌کند. این ۵ نکته ساده را رعایت کنید.",
MetaDescription = "۵ نکته طلایی نگهداری از ابزار برقی. روغن‌کاری، تمیزکاری، نگهداری باتری و سرویس دوره‌ای برای دریل، فرز و بتن‌کن.",
FeaturedImage = "https://images.unsplash.com/photo-1504148455328-c376907d081c?w=800&q=80&auto=format&fit=crop",
Tags = "نگهداری ابزار,سرویس دوره‌ای,دریل,فرز,بتن‌کن",
IsPublished = true,
PublishedAt = now.AddDays(-7),
CreatedAt = now.AddDays(-8), UpdatedAt = now.AddDays(-7),
Content = """
<h2>۱. تمیزکاری بعد از هر بار استفاده</h2>
<p>گرد و خاک و برادههای فلزی دشمن اصلی موتور ابزار هستند. بعد از هر استفاده با یک پارچه خشک یا پمپ هوا، دریچههای تهویه و بدنه ابزار را تمیز کنید. هرگز ابزار را در محیط مرطوب نگهداری نکنید.</p>
<h2>۲. روغنکاری منظم قطعات متحرک</h2>
<p>گیربکسها و چاک دریل نیاز به روغنکاری دورهای دارند. برای اکثر ابزارهای حرفهای هر ۶ ماه یک بار کافی است. از گریس مخصوص ابزار برقی استفاده کنید گریس معمولی یا روغن موتور مناسب نیست.</p>
<h2>۳. بیرینگها را جدی بگیرید</h2>
<p>اگر صدای غیرعادی از ابزارتان میشنوید، احتمالاً بیرینگ در حال خرابی است. ادامه کار با بیرینگ خراب میتواند به آرمیچر، گیربکس یا حتی بدنه آسیب بزند. بیرینگ ارزان است آرمیچر گران. به موقع تعمیر کنید.</p>
<h2>۴. باتریها را درست شارژ کنید</h2>
<p>برای ابزارهای شارژی:</p>
<ul>
<li>باتری لیتیومیون را نباید کاملاً تخلیه کنید</li>
<li>از شارژر اصلی استفاده کنید</li>
<li>باتری را در دمای اتاق نگهداری کنید (نه داخل ماشین زیر آفتاب)</li>
<li>اگر ابزار را برای مدت طولانی استفاده نمیکنید، باتری را با ۵۰٪ شارژ نگهداری کنید</li>
</ul>
<h2>۵. سرویس دورهای حرفهای</h2>
<p>حتی بهترین ابزارهای دنیا نیاز به سرویس دورهای دارند. توصیه میکنیم ابزارهای پرکاربرد را سالانه یک بار به تعمیرگاه بیاورید. سرویس دورهای شامل تعویض کاربن، بررسی بیرینگها، روغنکاری گیربکس و بررسی کلیه اتصالات الکتریکی میشود.</p>
<p><strong>آساد ابزار کرج</strong> سرویس دورهای تمام برندها را انجام میدهد. برای تعیین وقت با شماره <strong>۰۲۶-۳۴۵۶۷۸۹۰</strong> تماس بگیرید.</p>
"""
},
new BlogPost
{
Title = "تفاوت دریل SDS-Plus و SDS-Max — کدام را بخرم؟",
Slug = "sds-plus-vs-sds-max",
Excerpt = "دو استاندارد اتصال مته در دریل‌های چکشی حرفه‌ای. فرق اصلی کجاست و برای کدام کارها مناسب است؟",
MetaDescription = "مقایسه دریل SDS-Plus و SDS-Max. تفاوت در قدرت، کاربرد، ابعاد مته و قیمت. راهنمای خرید دریل چکشی حرفه‌ای.",
FeaturedImage = "https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=800&q=80&auto=format&fit=crop",
Tags = "دریل چکشی,SDS,بتن‌کن,راهنمای خرید,هیلتی,بوش",
IsPublished = true,
PublishedAt = now.AddDays(-3),
CreatedAt = now.AddDays(-4), UpdatedAt = now.AddDays(-3),
Content = """
<h2>SDS چیست؟</h2>
<p>SDS مخفف عبارت آلمانی <em>SteckDrehSitzt</em> (بگذاربچرخانبنشین) است. این یک سیستم اتصال سریع مته به دریل است که جایگزین چاک سه فک معمولی شده است. مزیت اصلی آن است که مته میتواند در طول دستگاه جلو-عقب حرکت کند و این حرکت محوری را به ضربه تبدیل میکند.</p>
<h2>SDS-Plus برای کارهای متوسط</h2>
<p>SDS-Plus (که گاهی SDS+ هم نوشته میشود) استاندارد رایجتر است. متههای آن دارای قطر ۱۰ میلیمتر در محل اتصال هستند.</p>
<ul>
<li>حداکثر قطر حفاری در بتن: معمولاً تا ۳۲ میلیمتر (با مته معمولی)</li>
<li>وزن معمول دستگاه: ۲.۵ تا ۵ کیلوگرم</li>
<li>انرژی ضربه: ۱ تا ۵ ژول</li>
<li>مناسب برای: کارهای ساختمانی معمول، نصب آنکر، سوراخکاری تا ۳۰ میلیمتر</li>
<li>برندهای محبوب: بوش GBH، هیلتی TE 6، دیوالت DCH</li>
</ul>
<h2>SDS-Max برای کارهای سنگین</h2>
<p>SDS-Max استاندارد برای کارهای سنگینتر است. متهها با قطر ۱۸ میلیمتر متصل میشوند و قدرت بیشتری انتقال میدهند.</p>
<ul>
<li>حداکثر قطر حفاری: تا ۵۰+ میلیمتر</li>
<li>وزن دستگاه: ۵ تا ۱۵ کیلوگرم</li>
<li>انرژی ضربه: ۵ تا ۲۰+ ژول</li>
<li>مناسب برای: تخریب بتن، حفاری در بتن مسلح، حفاریهای عمیق</li>
<li>برندهای محبوب: هیلتی TE 60/70، بوش GSH، دیوالت D25723K</li>
</ul>
<h2>کدام را بخریم؟</h2>
<p>پاسخ به کار شما بستگی دارد:</p>
<ul>
<li><strong>نصب آنکر، درپوش گچ، سوراخکاری معمول:</strong> SDS-Plus کافی است</li>
<li><strong>نصب داربست، سوراخکاری در ستون و کف بتنی:</strong> SDS-Plus قویتر</li>
<li><strong>تخریب بتن، حفاری کانال، کار مستمر روزانه:</strong> SDS-Max</li>
</ul>
<p>برای مشاوره در انتخاب و همچنین تعمیر دریلهای چکشی تمام برندها در کرج، با <strong>آساد ابزار</strong> تماس بگیرید: <strong>۰۲۶-۳۴۵۶۷۸۹۰</strong></p>
"""
},
new BlogPost
{
Title = "آنکر شیمیایی یا مکانیکی؟ راهنمای انتخاب برای پروژه‌های ساختمانی",
Slug = "chemical-vs-mechanical-anchor",
Excerpt = "آنکرها ابزارهای حیاتی در اتصال سازه‌ها به بتن هستند. در این مقاله تفاوت آنکر شیمیایی و مکانیکی را بررسی می‌کنیم.",
MetaDescription = "مقایسه آنکر شیمیایی و مکانیکی برای ساختمان‌سازی. کاربرد، ظرفیت بار، شرایط محیطی و راهنمای انتخاب.",
FeaturedImage = "https://images.unsplash.com/photo-1503387762-592deb58ef4e?w=800&q=80&auto=format&fit=crop",
Tags = "آنکر,آنکر شیمیایی,آنکر مکانیکی,PM آنکر,ساختمان",
IsPublished = true,
PublishedAt = now.AddDays(-1),
CreatedAt = now.AddDays(-2), UpdatedAt = now.AddDays(-1),
Content = """
<h2>آنکر چیست و چرا مهم است؟</h2>
<p>آنکر (یا لنگر) یک المان اتصال است که یک سازه یا قطعه را به پایه بتنی یا بنایی متصل میکند. از نصب نرده و داربست گرفته تا اتصال تجهیزات صنعتی سنگین، آنکرها نقش حیاتی در ایمنی سازهها دارند.</p>
<h2>آنکر مکانیکی (انبساطی)</h2>
<p>آنکرهای مکانیکی از اصطکاک و انبساط مکانیکی برای نگه داشتن در بتن استفاده میکنند.</p>
<ul>
<li><strong>نصب سریع:</strong> بدون نیاز به زمان عملآوری</li>
<li><strong>قابل بازیابی:</strong> میتوان آنها را بیرون آورد</li>
<li><strong>محدودیت:</strong> نیاز به فاصله از لبه بتن دارند</li>
<li><strong>انواع:</strong> آنکر بادکنکی، آنکر خار ماهی، آنکر ابسا</li>
<li><strong>مناسب برای:</strong> نصبهای سبک تا متوسط، تأسیسات، داربست</li>
</ul>
<h2>آنکر شیمیایی (رزینی)</h2>
<p>آنکرهای شیمیایی از رزین دو جزئی یا کپسول شیشهای برای اتصال استفاده میکنند. رزین در سوراخ پخش شده، سخت میشود و با بتن اتصال مستقیم میسازد.</p>
<ul>
<li><strong>ظرفیت بار بسیار بالا:</strong> تا چند برابر آنکر مکانیکی</li>
<li><strong>مناسب برای لبه:</strong> میتوان نزدیک لبه بتن نصب کرد</li>
<li><strong>محدودیت:</strong> نیاز به زمان عملآوری (۲۰ دقیقه تا چند ساعت)</li>
<li><strong>برندها:</strong> PM آنکر، هیلتی HIT، فیشر FIS</li>
<li><strong>مناسب برای:</strong> اتصالات سازهای، تجهیزات سنگین، بتن ترکدار</li>
</ul>
<h2>راهنمای انتخاب</h2>
<table>
<tr><th>معیار</th><th>آنکر مکانیکی</th><th>آنکر شیمیایی</th></tr>
<tr><td>سرعت نصب</td><td>فوری</td><td>نیاز به انتظار</td></tr>
<tr><td>ظرفیت کشش</td><td>متوسط</td><td>بسیار بالا</td></tr>
<tr><td>بتن ترکدار</td><td>محدود</td><td>مناسب</td></tr>
<tr><td>قیمت</td><td>پایینتر</td><td>بالاتر</td></tr>
</table>
<p>آساد ابزار کرج در زمینه انتخاب، تأمین و نصب انواع آنکر مشاوره تخصصی ارائه میدهد. برای اطلاعات بیشتر با شماره <strong>۰۲۶-۳۴۵۶۷۸۹۰</strong> تماس بگیرید.</p>
"""
}
);
db.SaveChanges();
}
if (!db.Products.Any())
{
var products = new List<Product>
{
new() { NameFa = "کاربن دیوالت DCD776", NameEn = "DeWalt DCD776 Carbon Brush", Category = "carbon", Brand = "dewalt", Price = 85000, Stock = 20, Sku = "DW-CBR-776",
ImageUrl = "https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "کاربن ماکیتا HR2470", NameEn = "Makita HR2470 Carbon Brush", Category = "carbon", Brand = "makita", Price = 95000, Stock = 15, Sku = "MK-CBR-2470",
ImageUrl = "https://images.unsplash.com/photo-1504148455328-c376907d081c?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "بیرینگ فرز رونیکس 3220", NameEn = "Ronix 3220 Bearing", Category = "bearing", Brand = "ronix", Price = 120000, Stock = 10, Sku = "RX-BRG-3220",
ImageUrl = "https://images.unsplash.com/photo-1581092160607-ee22621dd758?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "چاک دریل ۱۳ میل دیوالت", NameEn = "DeWalt 13mm Chuck", Category = "chuck", Brand = "dewalt", Price = 450000, Stock = 5, Sku = "DW-CHK-13",
ImageUrl = "https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "کلید دریل توسن ۱۰۱۰", NameEn = "Tosan 1010 Switch", Category = "switch", Brand = "tosan", Price = 180000, Stock = 8, Sku = "TS-SW-1010",
ImageUrl = "https://images.unsplash.com/photo-1518770660439-4636190af475?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "آرمیچر فرز بلک اند دکر ۱۱۵", NameEn = "Black & Decker 115mm Armature", Category = "armature", Brand = "black-decker", Price = 650000, Stock = 3, Sku = "BD-ARM-115",
ImageUrl = "https://images.unsplash.com/photo-1530124566582-a618bc2615dc?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "چرخ‌دنده بتن‌کن ماکیتا HR2470", NameEn = "Makita HR2470 Gear", Category = "gear", Brand = "makita", Price = 380000, Stock = 6, Sku = "MK-GR-2470",
ImageUrl = "https://images.unsplash.com/photo-1581092160607-ee22621dd758?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "کاربن فرز بزرگ رونیکس", NameEn = "Ronix Large Grinder Carbon", Category = "carbon", Brand = "ronix", Price = 75000, Stock = 25, Sku = "RX-CBR-LG",
ImageUrl = "https://images.unsplash.com/photo-1487452066049-a710f7296400?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "بیرینگ دریل دیوالت DCD796", NameEn = "DeWalt DCD796 Bearing Set", Category = "bearing", Brand = "dewalt", Price = 250000, Stock = 7, Sku = "DW-BRG-796",
ImageUrl = "https://images.unsplash.com/photo-1581092160607-ee22621dd758?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "کلید رئوستا مینی فرز دیوالت", NameEn = "DeWalt Mini Grinder Rheostat", Category = "switch", Brand = "dewalt", Price = 320000, Stock = 4, Sku = "DW-RS-MG",
ImageUrl = "https://images.unsplash.com/photo-1518770660439-4636190af475?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "دیسک سنباده فرز ۱۲۵ میل", NameEn = "Sanding Disc 125mm", Category = "accessory", Brand = null, Price = 45000, Stock = 50, Sku = "ACC-SD-125",
ImageUrl = "https://images.unsplash.com/photo-1607400201515-c2c41c07d307?w=400&q=75&auto=format&fit=crop" },
new() { NameFa = "استاتور دریل توسن", NameEn = "Tosan Drill Stator", Category = "stator", Brand = "tosan", Price = 550000, Stock = 3, Sku = "TS-ST-DR",
ImageUrl = "https://images.unsplash.com/photo-1530124566582-a618bc2615dc?w=400&q=75&auto=format&fit=crop" },
};
db.Products.AddRange(products);
db.SaveChanges();
}
}
}