private void ExecDistantLocal(Model.Prestashop.PsSupplier Supplier, Model.Local.Supplier LocalSupplier, Model.Local.SupplierRepository LocalSupplierRepository)
 {
     try
     {
         // Recovery Data From SupplierLang
         Model.Prestashop.PsSupplierLangRepository SupplierLangRepository = new Model.Prestashop.PsSupplierLangRepository();
         Model.Prestashop.PsSupplierLang           SupplierLang           = new Model.Prestashop.PsSupplierLang();
         if (SupplierLangRepository.ExistSupplierLang((Int32)Supplier.IDSupplier, Core.Global.Lang))
         {
             SupplierLang = SupplierLangRepository.ReadSupplierLang((Int32)Supplier.IDSupplier, Core.Global.Lang);
             LocalSupplier.Sup_Description     = SupplierLang.Description;
             LocalSupplier.Sup_MetaTitle       = SupplierLang.MetaTitle;
             LocalSupplier.Sup_MetaKeyword     = SupplierLang.MetaKeywords;
             LocalSupplier.Sup_MetaDescription = SupplierLang.MetaDescription;
         }
         LocalSupplier.Sup_Name   = Supplier.Name;
         LocalSupplier.Sup_Active = Convert.ToBoolean(Supplier.Active);
         LocalSupplier.Sup_Date   = (Supplier.DateUpd != null && Supplier.DateUpd > new DateTime(1753, 1, 2)) ? Supplier.DateUpd : DateTime.Now.Date;
         LocalSupplierRepository.Save();
     }
     catch (Exception ex)
     {
         Core.Error.SendMailError(ex.ToString());
     }
 }
        private void ExecLocalDistant(Model.Local.Supplier LocalSupplier, Model.Prestashop.PsSupplier Supplier, Model.Local.SupplierRepository LocalSupplierRepository, Model.Prestashop.PsSupplierRepository SupplierRepository, Boolean isSupplier)
        {
            try
            {
                // Assign data from LocalSupplier to Supplier
                Supplier.Name    = LocalSupplier.Sup_Name;
                Supplier.DateUpd = LocalSupplier.Sup_Date;
                Supplier.Active  = Convert.ToSByte(LocalSupplier.Sup_Active);
                // If the LocalSupplier have not a connection with Prestashop, We need to add Supplier
                if (isSupplier == false)
                {
                    Supplier.DateAdd = Supplier.DateUpd;
                    SupplierRepository.Add(Supplier, Global.CurrentShop.IDShop);
                    // We assign the SupplierId to LocalSupplier
                    LocalSupplier.Pre_Id = (Int32)Supplier.IDSupplier;
                    LocalSupplierRepository.Save();
                }
                // else we need to update Supplier
                else
                {
                    SupplierRepository.Save();
                }

                // We need to update SupplierLang too
                Boolean isSupplierLang = false;
                Model.Prestashop.PsSupplierLangRepository SupplierLangRepository = new Model.Prestashop.PsSupplierLangRepository();
                Model.Prestashop.PsSupplierLang           SupplierLang           = new Model.Prestashop.PsSupplierLang();
                if (SupplierLangRepository.ExistSupplierLang((Int32)Supplier.IDSupplier, Core.Global.Lang))
                {
                    SupplierLang   = SupplierLangRepository.ReadSupplierLang((Int32)Supplier.IDSupplier, Core.Global.Lang);
                    isSupplierLang = true;
                }
                SupplierLang.Description     = LocalSupplier.Sup_Description;
                SupplierLang.MetaTitle       = LocalSupplier.Sup_MetaTitle;
                SupplierLang.MetaDescription = LocalSupplier.Sup_MetaDescription;
                SupplierLang.MetaKeywords    = LocalSupplier.Sup_MetaKeyword;
                // If the SupplierLang doesn't exist, we need to add him
                if (isSupplierLang == false)
                {
                    SupplierLang.IDLang     = (uint)Core.Global.Lang;
                    SupplierLang.IDSupplier = Supplier.IDSupplier;
                    SupplierLangRepository.Add(SupplierLang);
                }
                // else we need to update him
                else
                {
                    SupplierLangRepository.Save();
                }
            }
            catch (Exception ex)
            {
                Core.Error.SendMailError(ex.ToString());
            }
        }
示例#3
0
        private Int32 CreateSupplier(String SageValue)
        {
            Int32 r = 0;

            try
            {
                lock (Core.Temp.ListSupplierLocked)
                {
                    while (Core.Temp.ListSupplierLocked.Contains(SageValue))
                    {
                        System.Threading.Thread.Sleep(20);
                    }

                    Core.Temp.ListSupplierLocked.Add(SageValue);

                    Model.Prestashop.PsSupplierRepository PsSupplierRepository = new Model.Prestashop.PsSupplierRepository();
                    if (PsSupplierRepository.Exist(SageValue))
                    {
                        r = (int)PsSupplierRepository.Read(SageValue).IDSupplier;
                    }
                    else
                    {
                        Model.Prestashop.PsSupplier PsSupplier = new Model.Prestashop.PsSupplier()
                        {
                            Name    = SageValue,
                            DateAdd = DateTime.Now,
                            DateUpd = DateTime.Now,
                            Active  = 1,
                        };
                        new Model.Prestashop.PsSupplierRepository().Add(PsSupplier, Core.Global.CurrentShop.IDShop);
                        r = (int)PsSupplier.IDSupplier;
                        foreach (Model.Prestashop.PsLang lang in new Model.Prestashop.PsLangRepository().ListActive(1, Core.Global.CurrentShop.IDShop))
                        {
                            new Model.Prestashop.PsSupplierLangRepository().Add(new Model.Prestashop.PsSupplierLang()
                            {
                                IDLang          = lang.IDLang,
                                IDSupplier      = PsSupplier.IDSupplier,
                                Description     = SageValue,
                                MetaDescription = SageValue,
                                MetaKeywords    = SageValue,
                                MetaTitle       = SageValue,
                            });
                        }
                    }
                    Core.Temp.ListSupplierLocked.Remove(SageValue);
                }
            }
            catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); }
            return(r);
        }
        // Void Exec : Sync Supplier
        public void Exec(Int32 LocalSupplierSend)
        {
            try
            {
                Model.Local.SupplierRepository        LocalSupplierRepository = new Model.Local.SupplierRepository();
                Model.Local.Supplier                  LocalSupplier           = LocalSupplierRepository.ReadId(LocalSupplierSend);
                Model.Prestashop.PsSupplierRepository SupplierRepository      = new Model.Prestashop.PsSupplierRepository();
                Boolean isSupplier = false;
                Model.Prestashop.PsSupplier Supplier = new Model.Prestashop.PsSupplier();

                // If the LocalSupplier have a connection with Prestashop
                if (LocalSupplier.Pre_Id != null)
                {
                    LocalSupplier.Sup_Date = LocalSupplier.Sup_Date.AddMilliseconds(-LocalSupplier.Sup_Date.Millisecond);
                    if (SupplierRepository.ExistId(LocalSupplier.Pre_Id.Value))
                    {
                        Supplier   = SupplierRepository.ReadId(LocalSupplier.Pre_Id.Value);
                        isSupplier = true;
                        if (Supplier.DateUpd.Ticks > LocalSupplier.Sup_Date.Ticks)
                        {
                            this.ExecDistantLocal(Supplier, LocalSupplier, LocalSupplierRepository);
                        }
                        else if (Supplier.DateUpd.Ticks < LocalSupplier.Sup_Date.Ticks)
                        {
                            this.ExecLocalDistant(LocalSupplier, Supplier, LocalSupplierRepository, SupplierRepository, isSupplier);
                        }
                    }
                }
                // We need to sync LocalSupplier with Prestashop
                else
                {
                    this.ExecLocalDistant(LocalSupplier, Supplier, LocalSupplierRepository, SupplierRepository, isSupplier);
                }
            }
            catch (Exception ex)
            {
                Core.Error.SendMailError(ex.ToString());
            }
        }