جستجو
محصولات
    منو بسته
    1 دی 1403

    نوشتن پلاگین جدید برای گزارش فروش کالا

    7 سال پیش
    #790
    نیاز مشتری: می خواهد بداند که کالای x ثبت شده توسط  کاربر Y چقدر فروش داشته
    برای این کار بنده یک پلاگین اضافه کردم کارهایی که انجام دادم به ترتیب:
    1- روی پوشه plugin راست کلیک و افزودن class library برای ایجاد پلاگین جدید
    2-کپی کردن فایلهای web.config , Description از پلاگین های دیگر
    3- اعمال تغییرات در فایل description
    4- راست کلیک روی refrence  و اضافه کردن dll های :   system.web
    system.web.mvc
    nop.web.framework
    nop.data
    nop.core
    nop.services

    5-نیازی به افزودن جدول جدید ندارم و گزارش از جداول order , orderItem , product   نیاز این گزارش را رفع می کند.

    6-افزودن کلاس context در پوشه data  به صورت زیر:


       public class SaleProductReportContext:DbContext,IDbContext
        {
            public SaleProductReportContext(string nameOrConnectionString) : base(nameOrConnectionString) { }

            public string CreateDataBaseInstallationScript()
            {
                return ((IObjectContextAdapter)this).ObjectContext.CreateDatabaseScript();
            }
            public void Install()
            {
                Database.SetInitializer<SaleProductReportContext>(null);
                Database.ExecuteSqlCommand(CreateDataBaseInstallationScript());
                SaveChanges();
            }

            public void Uninstall()
            {
                //حذف جداول ساخته شده که اینجا نداشتیم
            }

            public bool AutoDetectChangesEnabled
            {
                get
                {
                    throw new NotImplementedException();
                }

                set
                {
                    throw new NotImplementedException();
                }
            }

            public bool ProxyCreationEnabled
            {
                get
                {
                    throw new NotImplementedException();
                }

                set
                {
                    throw new NotImplementedException();
                }
            }

            public void Detach(object entity)
            {
                throw new NotImplementedException();
            }

            public int ExecuteSqlCommand(string sql, bool doNotEnsureTransaction = false, int? timeout = default(int?), params object[] parameters)
            {
                throw new NotImplementedException();
            }

            public IList<TEntity> ExecuteStoredProcedureList<TEntity>(string commandText, params object[] parameters) where TEntity : BaseEntity, new()
            {
                throw new NotImplementedException();
            }

            public IEnumerable<TElement> SqlQuery<TElement>(string sql, params object[] parameters)
            {
                throw new NotImplementedException();
            }

            IDbSet<TEntity> IDbContext.Set<TEntity>()
            {
                return base.Set<TEntity>();
            }
        }

    7 - افزودن کلاس   dependencyRegistrar  در پوشه Data به صورت زیر:


       public class SaleProductReportDependencyRegistrar : IDependencyRegistrar
        {
            private const string CONTEXT_NAME = "nop_object_context_sale_product";
            public int Order
            {
                get
                {
                    return 1;
                }
            }

            public void Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config)
            {
                this.RegisterPluginDataContext<SaleProductReportContext>(builder, CONTEXT_NAME);
                builder.RegisterType<EfRepository<OrderItem>>()
                    .As<IRepository<OrderItem>>()
                    .WithParameter(ResolvedParameter.ForNamed<IDbContext>(CONTEXT_NAME))
                    .InstancePerLifetimeScope();
            }
        }
    نقل قول
    0
    7 سال پیش
    #791

    8-افزودن کلاس پلاگین در ریشه class library به صورت زیر:

       public class SaleProductReportPlugin:BasePlugin ,IWidgetPlugin
        {
            private  SaleProductReportContext _context;

            public SaleProductReportPlugin(SaleProductReportContext context )
            {
                _context = context;
            }

            public void GetConfigurationRoute(out string actionName, out string controllerName, out RouteValueDictionary routeValues)
      
    نقل قول
    0
    7 سال پیش
    #794
    البته خدمت دوستان عرض شود که لینک های زیر رو هم مطالعه کردم و طبق همینا جلو رفتم

    [url=/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%BE%D9%84%D8%A7%DA%AF%DB%8C%D9%86-%D9%86%D8%A7%D9%BE-%DA%A9%D8%A7%D9%85%D8%B1%D8%B3-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-aspnet-mvc-%D8%A8%D8%AE%D8%B4-2]آموزش مقدماتی طراحی پلاگین ناپ کامرس (بر اساس ASP.NET MVC) – بخش 2[/url]
    نقل قول
    0
    09127857628