示例#1
0
        public virtual ByteArrayBuffer BufferByID(DbSelector selector
                                                  , int id)
        {
            var slot = CommittedSlot(selector, id);

            return(BufferByAddress(selector, slot.Address(), slot.Length()));
        }
示例#2
0
        public virtual int DatabaseIdentityID(DbSelector selector)
        {
            var db       = selector.Db(this);
            var identity = db.Identity();

            if (identity == null)
            {
                return(0);
            }
            return(identity.GetID(selector.Transaction(this)));
        }
示例#3
0
        public virtual IStoredClass[] StoredClasses(DbSelector selector
                                                    )
        {
            var db = selector.Db(this);

            db.ShowInternalClasses(true);
            try
            {
                return(db.ClassCollection().StoredClasses());
            }
            finally
            {
                db.ShowInternalClasses(false);
            }
        }
        public ActionResult <bool> GenericPut(string typename, int id, [FromBody] JObject post)
        {
            Type type = null;

            try
            {
                type = GetTypeCaseInsensitive($"DatabaseWebService.DatabaseObjects.{typename}");
                if (type == null)
                {
                    throw new Exception($"The requested datatype {typename} doesnt exist.");
                }

                DbSelector.Update(id, post.ToObject(type));
                return(true);
            }
            catch (TargetException)
            {
                var text = type.GetProperties().Aggregate("Supplied a faulty object to the Server. The expected Structure is:\n", (current, prop) => current + $"{prop.Name} : {prop.PropertyType.Name}\n");
                throw new Exception(text);
            }
        }
        public ActionResult <List <object> > GetAdmin(string typename)
        {
            List <object> output;

            Type type = null;

            try
            {
                type = GetTypeCaseInsensitive($"DatabaseWebService.DatabaseObjects.{typename}");
                if (type == null)
                {
                    throw new Exception($"The requested datatype {typename} doesnt exist.");
                }

                var instance = Activator.CreateInstance(type);

                foreach (var(key, value) in Request.Query)
                {
                    var prop = type.GetProperties().FirstOrDefault(p => p.Name.ToLower().Equals(key.ToLower()));
                    if (prop == null)
                    {
                        continue;
                    }


                    SetValue(prop, instance, value);
                }

                output = DbSelector.MatchTemplate(instance);
            }
            catch (TargetException)
            {
                var text = type.GetProperties().Aggregate("Supplied a faulty object to the Server. The expected Structure is:\n", (current, prop) => current + $"{prop.Name} : {prop.PropertyType.Name}\n");
                throw new Exception(text);
            }

            return(output);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
#if !DEBUG
            // TopMost = true; fonctionne pas :(
            SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
#endif
            try
            {
                string[] args = Environment.GetCommandLineArgs();
                if (args.Length < 3)
                {
                    throw new Exception("Nombre d'argument insuffisant");
                }

                doPiece = args[3];

                BaseCialAbstract.setDefaultParams(args[1], args[2]);
                InterMagRepos      = new InterMagRepository();
                InterMagRepos.Log += new InterMagRepository.LogEventHandler(Log);

                Text = label1.Text = "Envoi de la commande " + doPiece;

                DbSelector.DataSource    = InterMagRepos.getDbListFromContext().Where(d => d.name != InterMagRepos.dbName && d.isMag == true).ToList();
                DbSelector.DisplayMember = "name";
                DbSelector.ValueMember   = "name";

                // Récupère la commande
                Log("Vérification de la commande...");
                dsCde = InterMagRepos.getCommande(doPiece);
                string message = InterMagRepos.valideCommande(dsCde.Tables[0]);

                if (message != String.Empty)
                {
                    Log($"{InterMagRepos.dbName}::Erreur Doc {doPiece} : {message}");
                }
                else
                {
                    Log("Commande OK.");
                    EnvoyerBtn.Enabled = true;
                    DbSelector.Enabled = true;

                    typeCde = InterMagRepos.getTypeCde(dsCde);
                    if (typeCde == InterMagRepository.TYPE_DEPOT)
                    {
                        // Auto selectionne le magasin cible sur une commande dépot
                        DbSelector.SelectedIndex = DbSelector.FindString((string)dsCde.Tables[0].Rows[0]["CT_Classement"]);
                        DbSelector.Enabled       = false;
                    }
                    typeCdelabel.Text = InterMagRepos.typeCdeLabels[typeCde];

                    string MagRef = (string)dsCde.Tables[0].Rows[0]["magasin_referent"];
                    MagReflabel.Text = "";
                    if (typeCde == InterMagRepository.TYPE_RETRO && MagRef != "")
                    {
                        // Auto selectionne le magasin cible sur une commande rétro
                        MagReflabel.Text = (string)dsCde.Tables[0].Rows[0]["magasin_referent"];
#if DEBUG
                        MagRef += "DEV";
#endif
                        DbSelector.SelectedIndex = DbSelector.FindString(MagRef);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#7
0
        //Remove a SINGLE Viewer Windows data from Flags & gv[]
        public static bool DeleteViewerAndFlags(int index = -1, string currentDb = "")
        {
            int         x = index;
            SqlDbViewer sqlv;                                    // x = GridView[] index if received

            if (Flags.CurrentSqlViewer == null)
            {
                return(false);
            }
            Guid        tag = ( Guid )Flags.CurrentSqlViewer?.Tag;
            ListBoxItem lbi = new ListBoxItem( );

            if (x == -1)
            {             // Delete all
                for (int z = 0; z < MainWindow.gv.MaxViewers; z++)
                {
                    DbSelector.UpdateControlFlags(null, null, MainWindow.gv.PrettyDetails);
                    MainWindow.gv.CurrentDb [z] = "";
                    MainWindow.gv.ListBoxId [z] = Guid.Empty;
                    MainWindow.gv.Datagrid [z]  = null;
                    MainWindow.gv.window [z]    = null;
                }
                MainWindow.gv.ViewerCount     = 0;
                MainWindow.gv.PrettyDetails   = "";
                MainWindow.gv.SqlBankViewer   = null;
                MainWindow.gv.SqlCustViewer   = null;
                MainWindow.gv.SqlDetViewer    = null;
                MainWindow.gv.SqlViewerGuid   = Guid.Empty;
                MainWindow.gv.SqlViewerWindow = null;

                MainWindow.gv.Bankviewer = Guid.Empty;
                MainWindow.gv.Custviewer = Guid.Empty;
                MainWindow.gv.Detviewer  = Guid.Empty;

                Flags.ActiveSqlGrid = null;
                Flags.SqlBankViewer = null;
                Flags.SqlCustViewer = null;
                Flags.SqlDetViewer  = null;
//				Flags . CurrentSqlViewer = null;

                // ALL entries in our GridView structure are now cleared  ** totally **
                return(true);
            }
            else
            {
                int GridViewerArrayIndex = 0;
                // we may have NOT received the index of the viewer in the list
                // so  get the index for the correct Entry
                if (x == 99)
                {
                    // got to find it ourselves - iterate thruMainWindow.gv[] array  (Range  is 0 - 3)
                    for (int i = 0; i < 3; i++)
                    {
                        if (MainWindow.gv.CurrentDb [i] == currentDb)
                        {
                            x = i; break;
                        }
                    }
                    GridViewerArrayIndex = x;
                    // we have got the index in "x"  of the viewer in the Mainindow.gv[] array
                    // so  get the Tag of that selected Entry vin the ViewersList
                    for (int i = 1; i < 4; i++)
                    {
                        lbi = Flags.DbSelectorOpen.ViewersList.Items [i] as ListBoxItem;
                        if (MainWindow.gv.ListBoxId [GridViewerArrayIndex] == ( Guid )lbi.Tag)
                        {
                            //lbi = Flags . DbSelectorOpen . ViewersList . Items [ i ] as ListBoxItem;
                            Flags.DbSelectorOpen.ViewersList.Items.RemoveAt(i);
                            Flags.DbSelectorOpen.ViewersList.Refresh( );
                            break;
                        }
                    }
                }
                else
                {
                    // we have the ViewersList index given to us, so use it
                    lbi = Flags.DbSelectorOpen.ViewersList.Items [index] as ListBoxItem;
                    Flags.DbSelectorOpen.ViewersList.Items.RemoveAt(index);
                    Flags.DbSelectorOpen.ViewersList.Refresh( );
                    // got to findit in thruMainWindow.gv[] array  (Range  is 0 - 3)
                    for (int i = 0; i < 4; i++)
                    {
                        if (MainWindow.gv.ListBoxId [i] == ( Guid )lbi.Tag)
                        {
                            GridViewerArrayIndex = i;
                            break;
                        }
                    }
                }
                sqlv = Flags.CurrentSqlViewer as SqlDbViewer;
                sqlv.Close( );

                // We know which gv[] entry  we need to clear, so do it and return
                MainWindow.gv.CurrentDb [GridViewerArrayIndex] = "";
                MainWindow.gv.ListBoxId [GridViewerArrayIndex] = Guid.Empty;
                MainWindow.gv.Datagrid [GridViewerArrayIndex]  = null;
                MainWindow.gv.window [GridViewerArrayIndex]    = null;
                MainWindow.gv.PrettyDetails = "";
                MainWindow.gv.SqlViewerGuid = Guid.Empty;
                MainWindow.gv.ViewerCount--;
                // Reposition selected viewer if we have one
                if (Flags.DbSelectorOpen.ViewersList.Items.Count > GridViewerArrayIndex + 1)
                {
                    Flags.DbSelectorOpen.ViewersList.SelectedIndex = GridViewerArrayIndex + 1;
                    Flags.DbSelectorOpen.ViewersList.SelectedItem  = GridViewerArrayIndex + 1;
                }
                else if (Flags.DbSelectorOpen.ViewersList.Items.Count == GridViewerArrayIndex + 1)
                {
                    Flags.DbSelectorOpen.ViewersList.SelectedIndex = GridViewerArrayIndex - 1;
                    Flags.DbSelectorOpen.ViewersList.SelectedItem  = GridViewerArrayIndex - 1;
                }
                return(true);
            }

            // Unreachable code ...

            // Now sort out the  global gv[] flags
            for (int y = 1; y < Flags.DbSelectorOpen.ViewersList.Items.Count; y++)
            {
                // Get the Tag of eaxch Viewer in the list
                lbi = Flags.DbSelectorOpen.ViewersList.Items [y] as ListBoxItem;
                Guid lbtag = ( Guid )lbi.Tag;
                //See if it matches the one we are closing down
                if (( Guid )lbtag == ( Guid )tag)
                {
                    //Yes, we have got a match, so go ahead and remove its gv[] entries first
                    for (int z = 0; z < MainWindow.gv.MaxViewers; z++)
                    {
                        if (MainWindow.gv.ListBoxId [z] == lbtag)
                        {
                            MainWindow.gv.ViewerCount--;
                            MainWindow.gv.CurrentDb [z] = "";
                            MainWindow.gv.ListBoxId [z] = Guid.Empty;
                            MainWindow.gv.Datagrid [z]  = null;
                            MainWindow.gv.window [z]    = null;
                            break;
                        }
                    }
                    MainWindow.gv.PrettyDetails = "";
                    //Finally we can remove this entry from ViewersList
                    lbi         = Flags.DbSelectorOpen.ViewersList.Items [y] as ListBoxItem;
                    lbi.Content = "";
                    Flags.DbSelectorOpen.ViewersList.Items.RemoveAt(y);
                    // Set selectedIndex pointer to current position in list
                    int currentIndex = y - 1;
                    if (y <= 1)                                   // List is basically empty (No viewers in  the list)
                    {
                        return(true);
                    }
                    if (Flags.DbSelectorOpen.ViewersList.Items.Count > currentIndex)
                    {
                        Flags.DbSelectorOpen.ViewersList.SelectedIndex = currentIndex;
                        Flags.DbSelectorOpen.ViewersList.SelectedItem  = currentIndex;
                    }
                    else if (Flags.DbSelectorOpen.ViewersList.Items.Count == currentIndex)
                    {
                        Flags.DbSelectorOpen.ViewersList.SelectedIndex = currentIndex - 1;
                        Flags.DbSelectorOpen.ViewersList.SelectedItem  = currentIndex - 1;
                    }
                    return(true);
                }
            }
            MainWindow.gv.SqlViewerGuid = Guid.Empty;

            return(false);
        }
示例#8
0
 public virtual ByteArrayBuffer BufferByAddress(DbSelector
                                                selector, int address, int length)
 {
     return(selector.Db(this).DecryptedBufferByAddress(address, length));
 }
示例#9
0
 private Slot CommittedSlot(DbSelector selector, int id)
 {
     return(selector.Db(this).IdSystem().CommittedSlot(id));
 }
示例#10
0
 public virtual int DatabaseIdentityID(DbSelector selector)
 {
     var db = selector.Db(this);
     var identity = db.Identity();
     if (identity == null)
     {
         return 0;
     }
     return identity.GetID(selector.Transaction(this));
 }
示例#11
0
 public virtual IStoredClass[] StoredClasses(DbSelector selector
     )
 {
     var db = selector.Db(this);
     db.ShowInternalClasses(true);
     try
     {
         return db.ClassCollection().StoredClasses();
     }
     finally
     {
         db.ShowInternalClasses(false);
     }
 }
示例#12
0
 public virtual ByteArrayBuffer BufferByAddress(DbSelector
     selector, int address, int length)
 {
     return selector.Db(this).DecryptedBufferByAddress(address, length);
 }
示例#13
0
 private Slot CommittedSlot(DbSelector selector, int id)
 {
     return selector.Db(this).IdSystem().CommittedSlot(id);
 }
示例#14
0
 public virtual ByteArrayBuffer BufferByID(DbSelector selector
     , int id)
 {
     var slot = CommittedSlot(selector, id);
     return BufferByAddress(selector, slot.Address(), slot.Length());
 }