# UPLOAD LIST — Premium ID Card (Front + Back, role-wise theme)

তারিখ: 2026-08-22

---

## 1. লাইভ সার্ভারে যে ফাইলগুলো আপলোড করতে হবে

### নতুন ফাইল (NEW)

| # | সার্ভারে পাথ | কাজ |
|---|---|---|
| 1 | `/testsmigration.php` | ডাটাবেস মাইগ্রেশন — `users` টেবিলে কার্ড নম্বর / employee ID এর কলাম যোগ করে + পুরনো সব মেম্বারকে নম্বর বসিয়ে দেয়। **একবার চালিয়ে ডিলিট করে দেবেন।** |

### পরিবর্তিত ফাইল (MODIFIED — replace করুন)

| # | সার্ভারে পাথ | কী বদলেছে |
|---|---|---|
| 1 | `/includes/credentials.php` | পুরো ID কার্ড নতুন করে ডিজাইন — **Front + Back**, role অনুযায়ী কালার, guilloche security pattern, gold foil, hologram, barcode, QR, microprint। ২ পাতার PDF ডাউনলোড। |
| 2 | `/profile.php` | ID Card ট্যাবের নিচের লেখাটা আপডেট (front/back + 2-page PDF) |
| 3 | `/seller/profile.php` | ঐ একই লেখা আপডেট |

> `/admin/profile.php` বদলানোর দরকার নেই — ওটা একই ফাংশন কল করে, নতুন কার্ড আপনা থেকেই চলে আসবে।

---

## 2. ডাটাবেস পরিবর্তন — `testsmigration.php` চালান

`users` টেবিলে নতুন কলাম:

| কলাম | টাইপ | কাজ |
|---|---|---|
| `card_number` | VARCHAR(24) NULL | ১৬ ডিজিটের স্থায়ী কার্ড নম্বর (কার্ডে `5021 0898 5093 1018` এভাবে ছাপা হয়) |
| `employee_code` | VARCHAR(20) NULL | Employee ID — `WB1018` (customer), `WS3077` (seller), `WA0007` (admin) |
| `card_issued_on` | DATE NULL | কার্ড ইস্যুর তারিখ (ডিফল্ট = জয়েনিং ডেট) |
| `card_valid_till` | DATE NULL | ইস্যুর তারিখ + ৫ বছর |
| `card_status` | TINYINT(1) DEFAULT 1 | 1 = অ্যাক্টিভ কার্ড, 0 = ব্লক/বাতিল |

নতুন ইনডেক্স: `uniq_users_card` (UNIQUE on `card_number`), `idx_users_empcode` (`employee_code`)

**চালানোর নিয়ম**

1. উপরের ৪টা ফাইল আপলোড করুন
2. ব্রাউজারে খুলুন: `https://wbmcz.online/testsmigration.php`
3. সবুজ "completed successfully" দেখলে **ফাইলটা সার্ভার থেকে ডিলিট করে দিন**

> ফাইলটা idempotent — আগে থেকে যা আছে সেটা skip করে, তাই দুবার চললেও কোনো ক্ষতি নেই।
> মাইগ্রেশন না চালালেও সাইট ভাঙবে না — কার্ড তখনও দেখাবে, শুধু নম্বরটা ডাটাবেসে সেভ হবে না।

---

## 3. নতুন কার্ডে কী কী আছে

### সামনের দিক (Front)

- উপরে লোগো + **WBMCZ SERVICES** + role অনুযায়ী সাব-টাইটেল
- বড় **rectangular ছবি** সোনালি metallic ফ্রেমে (ছবি না থাকলে নামের initials)
- নামের **embossed name plate** — সোনালি hairline উপরে-নিচে, নিচে role pill
- **Card Number** (4-4-4-4, monospace), **Employee ID**, **Valid Thru**, **Member ID**, **Member Since**
- নিচে hologram disc + কোম্পানির নাম ও ঠিকানা
- ব্যাকগ্রাউন্ডে **guilloche security engraving**, foil sheen, উপরে-নিচে gold foil bar, একদম নিচে **microprint** লাইন

### পিছনের দিক (Back)

- কালো **magnetic strip**
- **Signature panel** (হোল্ডারের নাম হাতের লেখার স্টাইলে)
- **QR code** — স্ক্যান করলে ভেরিফিকেশন লিংকে যায় + Member ID, Issued, Valid till
- User ID, Mobile, Business (seller হলে), Subscription (থাকলে), Helpdesk, Member Since
- **Terms** — কার্ড কোম্পানির সম্পত্তি, হারালে ফেরত দেওয়ার ঠিকানা
- **Barcode** + কার্ড নম্বর
- Authorised Signatory ব্লক

### Role অনুযায়ী কালার

| Role | থিম | কালার |
|---|---|---|
| Customer / Member | Teal | গাঢ় সবুজ-নীল + mint accent |
| Premium Member (subscribed) | Gold | কালো-সোনালি gradient + gold foil |
| Seller | Emerald | গাঢ় এমারেল্ড + champagne gold |
| Admin / Staff | Onyx | কালো-navy + classic gold |

### ডাউনলোড অপশন

| বাটন | কী হয় |
|---|---|
| **Download PDF (2 pages)** | পেজ ১ = Front, পেজ ২ = Back, সাইজ 54 × 85.6 mm (আসল ID কার্ড সাইজ) — সরাসরি প্রিন্ট/ল্যামিনেট করা যায় |
| **Download PNG** | দুটো আলাদা হাই-রেজলিউশন PNG (`...-front.png`, `...-back.png`) |
| **Print** | দুই পিঠ পাশাপাশি এক পাতায় প্রিন্ট প্রিভিউ |

---

## 4. টেস্ট করার চেকলিস্ট

1. `testsmigration.php` চালান → সব সবুজ কিনা দেখুন → ফাইল ডিলিট
2. সাধারণ ইউজার দিয়ে লগইন → **Profile → My ID Card** → teal কার্ড, Front + Back দুটোই আসছে কিনা
3. Subscription আছে এমন ইউজার → সোনালি কার্ড + Subscription রো
4. Seller অ্যাকাউন্ট → এমারেল্ড কার্ড + Business নাম
5. Admin → `/admin/profile.php` → Onyx কার্ড
6. **Download PDF** চাপুন → ২ পাতার PDF নামছে কিনা
7. একই ইউজারের কার্ড নম্বর বারবার রিফ্রেশ করলেও **একই থাকবে** — এটা মিলিয়ে নিন
8. phpMyAdmin → `users` টেবিলে `card_number`, `employee_code` কলামে ভ্যালু বসেছে কিনা

---

## 5. মনে রাখার মতো

- কার্ড নম্বর user id থেকে তৈরি, তাই একজন মেম্বারের নম্বর **কখনো বদলাবে না**
- ঠিকানা / ফোন / ইমেইল কার্ডে আসে **Admin → Settings** এর `company_address`, `company_phone`, `company_email` থেকে
- লোগো আসে `company_logo` সেটিং থেকে
- QR কোড `api.qrserver.com` থেকে জেনারেট হয় (আগেও তাই ছিল)
- PNG/PDF বানানোর জন্য `html2canvas` + `jsPDF` CDN লাগে — সার্ভারে ইন্টারনেট ব্লক থাকলে Print অপশনটা fallback হিসেবে কাজ করবে
