‫۵ سال و ۳ ماه قبل، شنبه ۲۵ خرداد ۱۳۹۸، ساعت ۰۸:۳۵
نسخه جدید ۳.۰.۰ منتشر شد.

تغییرات:

امکان "پیاده‌سازی ذخیره و بازیابی داده‌ها به صورت سفارشی" افزوده شد.

منبع‌های داده قابل استفاده:

نصب:
Nuget Package Manager
Install-Package Parbad.Storage.Cache

.NET CLI
dotnet add package Parbad.Storage.Cache




نصب:
Nuget Package Manager
Install-Package Parbad.Storage.EntityFrameworkCore

.NET CLI
dotnet add package Parbad.Storage.EntityFrameworkCore


‫۵ سال و ۴ ماه قبل، پنجشنبه ۲۶ اردیبهشت ۱۳۹۸، ساعت ۰۳:۰۴
در نسخه ۲.۱.۰ ، باشگاه مشتریان بانک ملت نیز افزوده شده.

جهت استفاده کافیست در هنگام درخواست پرداخت، حساب‌هایی که باید مبلغی به آنها واریز شود را مشخص نمایید.

مثال:
var result = _onlinePayment.Request(invoice =>
{
   invoice
       // سایر مشخصات صورت حساب
       .SetAmount(50000)
       .AddMellatCumulativeAccount(subServiceId: 330, amount: 20000, payerId: 22)
       .AddMellatCumulativeAccount(subServiceId: 333, amount: 30000);
});


  • SubServiceId : کد شناسه حساب واریزی
  • Amount : مبلغی که باید برای حساب مورد نظر ریخته شود
  • PayerId : شناسه پرداخت (در صورت نداشتن این مورد، می‌توانید از متد overload آن استفاده کنید)

نکته ۱: حساب‌هایی که قصد واریز به آنها را دارید باید از قبل در هنگام عقد قرار داد با بانک، ارائه شده باشند. در غیر اینصورت امکان استفاده از این سرویس را ندارید.
نکته ۲: جمع مبلغ‌های تقسیم شده بین حساب‌ها، باید معادل مبلغ کل صورت‌حساب باشد.
نکته ۳: نیازی به ذکر درگاه ملت توسط متد UseGateway نیست. این کار به صورت خودکار انجام می‌شود.

در صورت مشاهده هر گونه اشکال، می‌توانید آن را در صفحه پروژه و یا GitHub عنوان کنید.

‫۵ سال و ۴ ماه قبل، پنجشنبه ۲۶ اردیبهشت ۱۳۹۸، ساعت ۰۱:۵۱
روش بهینه سازی شده تنظیم پایگاه داده در نسخه ۲.۱.۰

Database Initializer

Database Initializer همانطور که از نامش پیداست، به شما کمک می‌کند پایگاه داده پَرباد را به هر صورتیکه در نظر دارید راه اندازی کنید.

هدف از افزودن Database Initializer ها

از آنجایی که Entity Framework، پایگاه‌های داده زیادی را پشتیبانی می‌کند و هر کدام از آنها دارای شرایط، ویژگی‌ها و محدودیت های خاص خود هستند، شما می‌توانید پایگاه داده مورد نظر خود را آنطور که در نظر دارید ایجاد کنید. برای مثال پایگاه داده Sqlite طبق اعلام خود تیم Entity Framework دارای محدودیت‌هایی برای Migration است. به همین دلیل این پایگاه داده را نمی‌توان مانند SQL Server به راحتی Migrate کرد.

مواردی که توسط Database Initializer‌ها قابل استفاده هستند شامل:

  • Create Database
  • Delete Database
  • Migrate Database
  • Seed Database

نمونه مثال جهت تنظیم پایگاه داده به روش جدید:
services.AddParbad()
           .ConfigureDatabase(builder =>
           {
              // Choose your database provider (SQL Server, MySql, Sqlite, etc.)
              builder.Use....
           })
           .ConfigureDatabaseInitializer(builder =>
           {
              builder.UseInitializer(async context =>
              {
                  await context.Database.EnsureDeletedAsync();

                  // OR
                  await context.Database.EnsureCreatedAsync();

                  // OR
                  await context.Database.MigrateAsync();
              });
           });

در مثال بالا ابتدا در متد ConfigureDatabase نوع پایگاه داده مورد نظر خود را مشخص می‌کنیم.
سپس در متد ConfigureDatabaseInitializer تعیین می‌کنیم که پایگاه داده به چه صورتی باید ایجاد شود. همانطور که مشاهده می‌کنید، شما می‌توانید پایگاه داده را حذف، ایجاد و یا Migrate کنید.

همچنین جهت نوشتن راحتتر تنظیمات، متدهایی برای ایجاد، حذف و Migrate محیا شده که می‌توانید مانند زیر از آنها استفاده کنید:
services.AddParbad()
           .ConfigureDatabase(builder =>
           {
              // Choose your Entity Framework provider (SQL Server, MySql, Sqlite, etc.)
              builder.Use....
           })
           .ConfigureDatabaseInitializer(builder =>
           {
              builder.CreateDatabase();

              // OR
              builder.DeleteAndCreateDatabase();

              // OR
              builder.CreateAndMigrateDatabase();
           });

نکته ۱: اگر هیچکدام از متد‌های کمکی بالا برای شما مناسب نیستند، از همان روش اول یعنی UseInitializer استفاده کنید.
نکته ۲: Database Initializer ها، به همان ترتیبی که اضافه شده‌اند، اجرا خواهند شد.
نکته ۳: جهت سادگی در Migrate کردن پایگاه داده، در هنگام تنظیم پایگاه داده مورد نظر خود می‌توانید از متد UseParbadMigrations استفاده کنید.
مثال:
services.AddParbad()
           .ConfigureDatabase(builder =>
           {
              // SQL Server
              builder.UseSqlServer("Connection String", options => options.UseParbadMigrations());
           })
           .ConfigureDatabaseInitializer(builder =>
           {
              builder.CreateAndMigrateDatabase();
           });

متد UseParbadMigrations معادل متد زیر است:
builder.UseSqlServer("Connection String", options => options.MigrationsAssembly("Parbad"));


نمونه مثال‌ها را همچنین می‌توانید در صفحه GitHub پروژه مشاهده کنید. 
‫۵ سال و ۴ ماه قبل، جمعه ۶ اردیبهشت ۱۳۹۸، ساعت ۰۰:۲۳
ذخیره و بازیابی در این ابزار در حال حاضر برای دیتابیس‌های Relational طراحی شده، به همین دلیل در نسخه فعلی امکان استفاده از دیتابیس‌هایی مانند MongoDB میسر نیست. احتمال داره در نسخه‌های بعدی این امکان افزوده بشه.
‫۵ سال و ۵ ماه قبل، چهارشنبه ۱۴ فروردین ۱۳۹۸، ساعت ۰۶:۴۵
این مورد قبلا هم توسط افراد دیگری عنوان شده بوده و من سعی میکنم اینجا یه توضیح مختصر برای شما و سایرین بدم، چون این مورد بیشتر جنبه توصیه طراحی سیستم داره تا کار کردن با این ابزار.

همونطور که مطلع هستین پَرباد برای بانک اطلاعاتی از EntityFramework استفاده می‌کنه. بنابراین این پروژه Migrations‌های مخصوص به خودش رو داره که با هر آپدیت میتونن اعمال بشن. در نتیجه شما نمی‌تونید با پروژه خودتون Merge کنید. 

بانک اطلاعاتی پَرباد فقط جنبه مصرف داخلی داره. اما حتی اگر اینگونه هم نبود، شما نباید طراحی سیستم خودتون رو بر اساس یک کتابخانه (پَرباد و یا هر کتابخانه دیگری) انجام بدید. طراحی سیستم شما باید کاملا مستقل از هر ابزاری باشه.
به این علت که:
  1. این ابزار توسط اشخاص دیگری توسعه داده شده نه شما و این یعنی هر لحظه امکان تغییر سراسری اون ابزار توسط توسعه دهندگانش هست. در نتیجه هر لحظه‌ای که اون ابزار تغییری پیدا بکنه، شما هم باید طراحی سیستم خودتون رو تغییر بدید.
  2. ذخیره اطلاعات یک پرداخت باید توسط شما در بانک اطلاعاتی شما انجام بشه، اطلاعاتی که پَرباد در بانک اطلاعاتی خودش ذخیره و بازبابی می‌کنه، صرفا جنبه مصرف داخلی برای خودش رو داره.

اما در مورد اطلاعاتی که شما در پایگاه داده خودتون نیاز دارید، این اطلاعات طبیعتا اصلی‌ترین داده‌های یک پرداخت هست. یعنی: کد رهگیری، کد تراکنش بانکی، نام بانک، مبلغ و  غیره. بنابراین برای مثال اگر شما نیاز به یک کلید اصلی پرداخت دارید، باید کد رهگیری (که پس از ارسال یک درخواست پرداخت می‌تونید از پَرباد دریافت کنید) رو به عنوان کلید اصلی در جدول خودتون ثبت کنید.

اگر بخوام کامل و مرحله‌ای براتون توضیح بدم، عملیات استاندارد خرید یا سفارش به صورت زیر هست:

  1. شما از قبل طراحی بانک اطلاعاتی خودتون رو بدون در نظر گرفتن هیج گونه ابزار خارجی (پَرباد) انجام داده‌اید. (پَرباد یک ابزار پرداخت هست و برای اون اهمیتی نداره پرداخت در سیستم مصرف کننده به چه شکلی طراحی شده. وظیفه او فقط انجام عملیات پرداخت آنلاین هست)
  2. مبلغ قابل پرداخت رو مشخص می‌کنید و درخواست پرداخت رو توسط پَرباد انجام میدید.
  3. نتیجه درخواست پرداخت که شامل کد رهگیری و غیره هست رو در بانک اطلاعاتی خودتون ثبت می‌کنید. (برای فاکتور مورد نظر)
  4. کاربر به درگاه بانکی هدایت میشه،  هزینه رو پرداخت می‌کنه و به وب سایت شما برمیگرده.
  5. عملیات تایید پرداخت رو توسط پَرباد انجام میدید.
  6. پس از تایید، کلیه اطلاعات لازم مانند کد رهگیری، کد تراکنش بانکی، مبلغ و غیره رو از پَرباد دریافت می‌کنید و در بانک اطلاعاتی خودتون ذخیره می‌کنید (با توجه به کد رهگیری که در مرحله ۳ ذخیره کرده بودید، اطلاعات فاکتور مورد نظرتون رو آپدیت می‌کنید)

‫۵ سال و ۵ ماه قبل، سه‌شنبه ۱۳ فروردین ۱۳۹۸، ساعت ۱۸:۳۵
پایگاه داده پَرباد صرفا فقط و فقط جنبه مصرف داخلی (برای خود پَرباد) داره و نه مصرف خارجی.
شما چه قسمتیش رو قصد دارید سفارشی کنید؟ بهتره که دقیقا توضیح بدید چه کاری قصد دارید انجام بدید تا بتونم کمکتون کنم
‫۵ سال و ۵ ماه قبل، سه‌شنبه ۱۳ فروردین ۱۳۹۸، ساعت ۰۷:۱۶
منظورتون از به صورت دستی چی هست؟ لطفا بیشتر توضیح بدید.
در ضمن در نظر داشته باشید که این بانک اطلاعاتی شامل Migration هم هست. بنابراین با هر آپدیت‌ای که برای این پکیج منتشر میشه، بانک اطلاعاتی در برنامه شما هم به صورت خودکار آپدیت میشه بدون اینکه شما نیاز به اطلاع داشته باشید.