بسته

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

6 سال پیش
#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
6 سال پیش
#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
6 سال پیش
#794 نقل قول
البته خدمت دوستان عرض شود که لینک های زیر رو هم مطالعه کردم و طبق همینا جلو رفتم

آموزش مقدماتی طراحی پلاگین ناپ کامرس (بر اساس ASP.NET MVC) – بخش 2
0
دسته بندی ها