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

319 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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.
@page
@model AsadiTools.Pages.IndexModel
@{
ViewData["Title"] = "آساد ابزار - نمایندگی رسمی دیوالت در کرج";
ViewData["Description"] = "نمایندگی رسمی دیوالت، ماکیتا، رونیکس، توسن و بلک اند دکر در کرج. تعمیر دریل، فرز، مینی فرز، شمشاد زن و بتن کن با ضمانت.";
Layout = "_Layout";
}
@section Head {
<script type="application/ld+json">
{"@@context":"https://schema.org","@@type":"LocalBusiness","name":"آساد ابزار کرج","image":"https://images.unsplash.com/photo-1504148455328-c376907d081c?w=800","telephone":"+98@SiteData.Company.TelPhone.Substring(1)","address":{"@@type":"PostalAddress","streetAddress":"@SiteData.Company.Address","addressLocality":"کرج","addressRegion":"البرز","postalCode":"31489","addressCountry":"IR"},"openingHours":"Mo-Sa 08:00-18:00","priceRange":"$$","sameAs":["https://instagram.com/@SiteData.Company.Instagram"]}
</script>
}
<!-- ═══════════════════════════════ HERO ═══════════════════════════════════ -->
<section class="relative text-white overflow-hidden" style="min-height:580px">
<!-- Background image with overlay -->
<div class="absolute inset-0 bg-cover bg-center bg-no-repeat"
style="background-image:url('https://images.unsplash.com/photo-1504148455328-c376907d081c?w=1400&q=80&auto=format&fit=crop')"></div>
<div class="absolute inset-0 bg-gradient-to-l from-blue-900/95 via-blue-900/85 to-blue-800/70"></div>
<div class="relative max-w-6xl mx-auto px-4 py-20 grid md:grid-cols-2 gap-12 items-center">
<!-- Text -->
<div>
<div class="inline-flex items-center gap-2 bg-yellow-400 text-gray-900 text-sm font-bold px-4 py-1.5 rounded-full mb-5 shadow-lg">
🛡️ نمایندگی رسمی دیوالت در کرج
</div>
<h1 class="text-4xl md:text-5xl font-extrabold leading-tight mb-5">
تعمیر تخصصی<br>
<span class="text-yellow-300">ابزار صنعتی</span><br>
در کرج
</h1>
<p class="text-blue-100 text-lg leading-8 mb-8">
با بیش از ۱۵ سال تجربه، تعمیر دریل، فرز، مینی فرز، بتن‌کن و شمشاد‌زن
برندهای دیوالت، ماکیتا، رونیکس، توسن و بلک اند دکر.
</p>
<div class="flex flex-wrap gap-3 mb-10">
<a href="/Contact" class="bg-yellow-400 text-gray-900 font-bold px-6 py-3 rounded-xl hover:bg-yellow-300 transition-colors shadow-lg">📞 تماس برای تعمیر</a>
<a href="/Shop" class="border-2 border-white/80 text-white font-bold px-6 py-3 rounded-xl hover:bg-white hover:text-blue-900 transition-colors">🛒 فروشگاه قطعات</a>
<a href="/DeWalt" class="bg-white/10 border border-white/30 text-white font-bold px-6 py-3 rounded-xl hover:bg-white/20 transition-colors">🔧 ابزار دیوالت</a>
</div>
<!-- Quick trust badges -->
<div class="flex flex-wrap gap-3">
@foreach (var badge in new[] { "✅ ضمانت ۳ ماهه", "✅ قطعات اصل", "✅ تشخیص رایگان", "✅ تحویل سریع" })
{
<span class="text-sm text-blue-100 bg-white/10 px-3 py-1 rounded-full">@badge</span>
}
</div>
</div>
<!-- Stats cards -->
<div class="grid grid-cols-2 gap-4">
@foreach (var s in new[] {
("+۱۵", "سال تجربه", "🏆"),
("+۵۰۰۰", "دستگاه تعمیر شده", "🔧"),
("۵", "برند پشتیبانی", "⭐"),
("۱۰۰٪", "ضمانت تعمیر", "🛡️")
})
{
<div class="bg-white/10 backdrop-blur-sm rounded-2xl p-6 text-center border border-white/20 hover:bg-white/15 transition-colors">
<div class="text-3xl mb-2">@s.Item3</div>
<div class="text-3xl font-extrabold text-yellow-300 mb-1">@s.Item1</div>
<div class="text-sm text-blue-100">@s.Item2</div>
</div>
}
</div>
</div>
</section>
<!-- ══════════════════════ DEWALT FEATURED ════════════════════════════════ -->
<section class="py-16 px-4" style="background:linear-gradient(135deg,#1a1a1a 0%,#2d2d00 50%,#1a1a00 100%)">
<div class="max-w-6xl mx-auto grid md:grid-cols-2 gap-12 items-center">
<!-- Image -->
<div class="relative rounded-3xl overflow-hidden shadow-2xl" style="height:380px">
<img src="https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=700&q=85&auto=format&fit=crop"
alt="ابزار دیوالت" class="w-full h-full object-cover" loading="lazy" />
<div class="absolute inset-0 bg-gradient-to-t from-black/60 to-transparent"></div>
<div class="absolute bottom-4 right-4">
<span class="bg-yellow-400 text-gray-900 font-extrabold px-4 py-2 rounded-xl text-sm shadow-lg">DEWALT</span>
</div>
</div>
<!-- Content -->
<div class="text-white">
<div class="inline-flex items-center gap-2 bg-yellow-400 text-gray-900 text-xs font-bold px-3 py-1 rounded-full mb-4">
🛡️ مجاز از DeWalt ایران
</div>
<h2 class="text-3xl font-extrabold mb-4 leading-tight">
نمایندگی رسمی<br>
<span class="text-yellow-400">DeWalt</span> در کرج
</h2>
<p class="text-gray-300 leading-8 mb-6">
آساد ابزار افتخار دارد تنها نمایندگی مجاز تعمیر ابزار دیوالت در کرج باشد.
تمامی تعمیرات توسط تکنیسین‌های آموزش‌دیده و با قطعات کاملاً اورجینال انجام می‌شود.
خدمات پشتیبانی شامل بیش از ۱۵ مدل از محبوب‌ترین ابزار دیوالت است.
</p>
<div class="grid grid-cols-2 gap-3 mb-6">
@foreach (var f in new[] { ("۱۵+", "مدل ابزار"), ("قطعه اصل", "دیوالت"), ("آموزش رسمی", "تکنیسین"), ("ضمانت کتبی", "تعمیر") })
{
<div class="bg-white/10 rounded-xl p-3 text-center border border-yellow-400/30">
<div class="font-bold text-yellow-400 text-lg">@f.Item1</div>
<div class="text-xs text-gray-300">@f.Item2</div>
</div>
}
</div>
<div class="flex gap-3">
<a href="/DeWalt" class="bg-yellow-400 text-gray-900 font-bold px-6 py-3 rounded-xl hover:bg-yellow-300 transition-colors">مشاهده همه ابزار دیوالت</a>
<a href="/Services/Brand?id=dewalt" class="border border-yellow-400/50 text-yellow-300 font-bold px-6 py-3 rounded-xl hover:border-yellow-400 transition-colors">خدمات تعمیر </a>
</div>
</div>
</div>
</section>
<!-- ═══════════════════════ BRANDS ════════════════════════════════════════ -->
<section class="py-16 px-4 bg-white">
<div class="max-w-6xl mx-auto">
<div class="text-center mb-10">
<h2 class="text-2xl font-bold text-gray-900 mb-2">برندهایی که تعمیر می‌کنیم</h2>
<p class="text-gray-500">تخصص ما در نمایندگی و تعمیر برترین برندهای ابزار صنعتی جهان</p>
</div>
<div class="grid grid-cols-2 md:grid-cols-5 gap-4">
@foreach (var b in SiteData.Brands)
{
<a href="/Services/Brand?id=@b.Id"
class="group relative border-2 rounded-2xl p-5 text-center hover:shadow-xl transition-all hover:-translate-y-1"
style="border-color:@(b.IsOfficial ? "#f59e0b" : "#e5e7eb")">
@if (b.IsOfficial)
{
<div class="absolute -top-3 right-1/2 translate-x-1/2 bg-yellow-400 text-gray-900 text-xs font-bold px-2 py-0.5 rounded-full whitespace-nowrap">🛡️ رسمی</div>
}
<div class="w-16 h-16 rounded-2xl flex items-center justify-center text-2xl font-extrabold mx-auto mb-3 shadow-md"
style="background-color:@b.Color;color:@b.TextColor">
@b.Name.Substring(0, 2)
</div>
<div class="font-bold text-gray-800">@b.NameFa</div>
<div class="text-xs text-gray-400 mt-0.5">@b.Name</div>
<div class="text-xs text-blue-600 mt-2 group-hover:underline">خدمات تعمیر </div>
</a>
}
</div>
</div>
</section>
<!-- ══════════════════════ TOOLS WE REPAIR ═══════════════════════════════ -->
<section class="py-16 px-4 bg-gray-50">
<div class="max-w-6xl mx-auto">
<div class="text-center mb-10">
<h2 class="text-2xl font-bold text-gray-900 mb-2">ابزارهایی که تعمیر می‌کنیم</h2>
<p class="text-gray-500">تخصص کامل در تعمیر انواع ابزار برقی صنعتی</p>
</div>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
@{
var toolImages = new Dictionary<string, string>
{
["drill"] = "https://images.unsplash.com/photo-1572981779307-38b8cabb2407?w=500&q=75&auto=format&fit=crop",
["grinder"] = "https://images.unsplash.com/photo-1487452066049-a710f7296400?w=500&q=75&auto=format&fit=crop",
["mini-grinder"] = "https://images.unsplash.com/photo-1504148455328-c376907d081c?w=500&q=75&auto=format&fit=crop",
["hedge-trimmer"] = "https://images.unsplash.com/photo-1416879595882-3373a0480b5b?w=500&q=75&auto=format&fit=crop",
["rotary-hammer"] = "https://images.unsplash.com/photo-1504307651254-35680f356dfd?w=500&q=75&auto=format&fit=crop",
["laser-level"] = "https://images.unsplash.com/photo-1609220136736-443140cfeaa8?w=500&q=75&auto=format&fit=crop",
["gerd-bar"] = "https://images.unsplash.com/photo-1503387762-592deb58ef4e?w=500&q=75&auto=format&fit=crop",
["miter-saw"] = "https://images.unsplash.com/photo-1558618047-3c8c1d8b9df1?w=500&q=75&auto=format&fit=crop",
["woodworking"] = "https://images.unsplash.com/photo-1588854337115-1c67d9247e4d?w=500&q=75&auto=format&fit=crop",
["laser-measure"] = "https://images.unsplash.com/photo-1518770660439-4636190af475?w=500&q=75&auto=format&fit=crop",
};
}
@foreach (var t in SiteData.ToolTypes)
{
var img = toolImages.TryGetValue(t.Id, out var u) ? u : "";
<a href="/Services" class="bg-white rounded-2xl overflow-hidden border border-gray-100 hover:shadow-lg transition-all hover:-translate-y-0.5 block group">
@if (!string.IsNullOrEmpty(img))
{
<div class="h-44 overflow-hidden relative">
<img src="@img" alt="تعمیر @t.NameFa" loading="lazy"
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500" />
<div class="absolute inset-0 bg-gradient-to-t from-black/50 to-transparent"></div>
<div class="absolute bottom-3 right-4 text-3xl">@t.Icon</div>
</div>
}
<div class="p-6">
<h3 class="font-bold text-xl text-gray-900 mb-2">تعمیر @t.NameFa</h3>
<p class="text-gray-500 text-sm leading-7 mb-4">@t.Description</p>
<ul class="space-y-1.5">
@foreach (var issue in t.CommonIssues.Take(3))
{
<li class="flex items-start gap-2 text-sm text-gray-600">
<span class="text-green-500 shrink-0 mt-0.5">✓</span> @issue
</li>
}
</ul>
<div class="mt-4 text-blue-600 text-sm font-medium group-hover:underline">مشاهده جزئیات </div>
</div>
</a>
}
</div>
</div>
</section>
<!-- ══════════════════════ WORKSHOP GALLERY ═══════════════════════════════ -->
<section class="py-16 px-4 bg-white">
<div class="max-w-6xl mx-auto">
<div class="text-center mb-10">
<h2 class="text-2xl font-bold text-gray-900 mb-2">کارگاه تعمیر آساد ابزار</h2>
<p class="text-gray-500">نگاهی به محیط کاری و تجهیزات تخصصی ما</p>
</div>
<div class="grid grid-cols-2 md:grid-cols-3 gap-3">
@{
var gallery = new[]
{
("https://images.unsplash.com/photo-1581579438747-1dc8d17bbce4?w=600&q=80&auto=format&fit=crop", "کارگاه تعمیر ابزار"),
("https://images.unsplash.com/photo-1530124566582-a618bc2615dc?w=600&q=80&auto=format&fit=crop", "جعبه ابزار تخصصی"),
("https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=600&q=80&auto=format&fit=crop", "ابزار دیوالت"),
("https://images.unsplash.com/photo-1607400201515-c2c41c07d307?w=600&q=80&auto=format&fit=crop", "تکنیسین متخصص"),
("https://images.unsplash.com/photo-1518770660439-4636190af475?w=600&q=80&auto=format&fit=crop", "قطعات یدکی"),
("https://images.unsplash.com/photo-1504148455328-c376907d081c?w=600&q=80&auto=format&fit=crop", "ابزار صنعتی"),
};
}
@foreach (var (src, alt) in gallery)
{
<div class="relative rounded-2xl overflow-hidden group" style="height:200px">
<img src="@src" alt="@alt" loading="lazy"
class="w-full h-full object-cover group-hover:scale-110 transition-transform duration-500" />
<div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors"></div>
</div>
}
</div>
</div>
</section>
<!-- ══════════════════════ WHY US ════════════════════════════════════════ -->
<section class="py-16 px-4 bg-gray-50">
<div class="max-w-6xl mx-auto">
<div class="text-center mb-10">
<h2 class="text-2xl font-bold text-gray-900 mb-2">چرا آساد ابزار؟</h2>
<p class="text-gray-500">دلایل اعتماد هزاران مشتری به ما</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
@foreach (var item in new[] {
("🛡️", "ضمانت تعمیر", "ضمانت کتبی ۳ ماهه روی کلیه تعمیرات انجام‌شده", "bg-blue-50 border-blue-100"),
("🔩", "قطعات ۱۰۰٪ اصل", "فقط قطعات یدکی اورجینال از نمایندگی رسمی", "bg-yellow-50 border-yellow-100"),
("⚡", "تعمیر سریع", "اکثر تعمیرات در کمتر از ۴۸ ساعت تحویل داده می‌شود", "bg-green-50 border-green-100"),
("⭐", "تکنیسین مجرب", "بیش از ۱۵ سال سابقه تعمیر تخصصی ابزار صنعتی", "bg-purple-50 border-purple-100"),
("💰", "قیمت شفاف", "برآورد رایگان قبل از شروع تعمیر بدون هزینه پنهان", "bg-red-50 border-red-100"),
("📦", "ارسال سراسری", "تعمیر ابزار از سراسر کشور از طریق پست و تیپاکس", "bg-orange-50 border-orange-100"),
("📞", "مشاوره رایگان", "مشاوره تلفنی رایگان برای تشخیص عیب دستگاه", "bg-teal-50 border-teal-100"),
("🔄", "خدمات پیشگیرانه", "سرویس دوره‌ای و تنظیم ابزار برای جلوگیری از خرابی", "bg-indigo-50 border-indigo-100"),
})
{
<div class="text-center p-6 rounded-2xl border @item.Item4">
<div class="text-3xl mb-3">@item.Item1</div>
<h3 class="font-bold text-gray-900 mb-2">@item.Item2</h3>
<p class="text-sm text-gray-500 leading-6">@item.Item3</p>
</div>
}
</div>
</div>
</section>
<!-- ══════════════════════ TECHNICIAN SECTION ════════════════════════════ -->
<section class="py-16 px-4 bg-blue-900 text-white">
<div class="max-w-6xl mx-auto grid md:grid-cols-2 gap-12 items-center">
<div>
<h2 class="text-3xl font-extrabold mb-4">تکنیسین‌های ما، متخصص‌ترین در البرز</h2>
<p class="text-blue-100 leading-8 mb-6">
تیم تکنیسین‌های آساد ابزار با گذراندن دوره‌های آموزشی رسمی دیوالت و ماکیتا،
تجربه تعمیر بیش از ۵۰۰۰ دستگاه را دارند. از ساده‌ترین مشکل مانند تعویض کاربن،
تا پیچیده‌ترین عیوب الکترونیکی و مکانیکی.
</p>
<div class="space-y-3">
@foreach (var f in new[] {
"آموزش رسمی از DeWalt و Makita",
"تجربه بیش از ۱۵ سال تعمیر تخصصی",
"استفاده از دستگاه‌های اندازه‌گیری حرفه‌ای",
"به‌روز بودن با آخرین مدل‌های ابزار",
"ارائه رسید و فاکتور رسمی برای تمام تعمیرات",
})
{
<div class="flex items-center gap-3">
<span class="w-5 h-5 rounded-full bg-yellow-400 flex items-center justify-center text-gray-900 text-xs font-bold shrink-0">✓</span>
<span class="text-blue-100 text-sm">@f</span>
</div>
}
</div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-2xl" style="height:380px">
<img src="https://images.unsplash.com/photo-1581579438747-1dc8d17bbce4?w=700&q=85&auto=format&fit=crop"
alt="تکنیسین تعمیر ابزار آساد ابزار کرج" loading="lazy"
class="w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-blue-900/80 to-transparent"></div>
<div class="absolute bottom-5 right-5 left-5">
<div class="bg-white/10 backdrop-blur-sm rounded-xl p-4 border border-white/20">
<div class="font-bold text-sm mb-1">آساد ابزار کرج</div>
<div class="text-blue-200 text-xs">نمایندگی رسمی دیوالت • ۱۵ سال تجربه</div>
</div>
</div>
</div>
</div>
</section>
<!-- ══════════════════════ CTA ═══════════════════════════════════════════ -->
<section class="py-16 px-4 bg-yellow-400">
<div class="max-w-3xl mx-auto text-center">
<h2 class="text-3xl font-extrabold text-gray-900 mb-4">ابزار شما خراب شده؟</h2>
<p class="text-gray-700 text-lg mb-8">همین الان با ما تماس بگیرید. مشاوره رایگان و تعمیر با ضمانت کتبی.</p>
<div class="flex flex-wrap justify-center gap-4">
<a href="tel:@SiteData.Company.TelPhone" class="bg-gray-900 text-white font-bold px-8 py-3.5 rounded-xl hover:bg-gray-800 transition-colors text-lg shadow-lg">
📞 @SiteData.Company.Phone
</a>
<a href="https://wa.me/@SiteData.Company.Whatsapp" target="_blank"
class="bg-green-600 text-white font-bold px-8 py-3.5 rounded-xl hover:bg-green-700 transition-colors text-lg shadow-lg">
💬 واتساپ
</a>
<a href="/DeWalt" class="bg-white text-gray-900 font-bold px-8 py-3.5 rounded-xl hover:bg-gray-50 transition-colors text-lg shadow-lg">
🔧 ابزار دیوالت
</a>
</div>
</div>
</section>