public static Dictionary <int, Zmapping> getBody()
        {
            Dictionary <int, Zmapping> myMappings = new Dictionary <int, Zmapping>();

            using (var db = new ZudelloContext())
            {
                int i     = 0;
                var MapID = db.Zmapping.Where(c => c.IsOutgoing == 1).ToList();

                foreach (var mappings in MapID.OrderBy(c => c.ProcessOrder).ThenByDescending(l => l.connection_id))
                {
                    Zmapping Data = new Zmapping()
                    {
                        DocType       = mappings.DocType,
                        Body          = mappings.Body,
                        Section       = mappings.Section,
                        database      = mappings.database,
                        Id            = mappings.Id,
                        connection_id = mappings.connection_id
                    };


                    myMappings.Add(i, Data);
                    i++;
                }

                return(myMappings);
            }
        }
Ejemplo n.º 2
0
        public static Dictionary <int, Zmapping> getBody()
        {
            Dictionary <int, Zmapping> myMappings = new Dictionary <int, Zmapping>();

            using (var db = new ZudelloContext())
            {
                var MapID = db.Zmapping.Where(i => i.IsOutgoing == 1).OrderBy(k => k.ProcessOrder).ToList();

                foreach (var mappings in MapID)
                {
                    Zmapping Data = new Zmapping()
                    {
                        DocType = mappings.DocType,
                        Body    = mappings.Body,
                        Section = mappings.Section,
                        Id      = mappings.Id
                    };


                    myMappings.Add(mappings.Id, Data);
                }

                return(myMappings);
            }
        }
Ejemplo n.º 3
0
        /* UPDATE ZLASTSYNC set lastSync = "23/01/2020 4:49:41 AM"
         * where Mapping_ID not in (SELECT ID FROM ZMAPPING WHERE TYPE IN ("API") );
         * DELETE FROM ZQUEUE;
         */
        public static bool RunSQLLiteCmd(string token, Zmapping cmd)
        {
            using (var db = new ZudelloContext())
            {
                try
                {
                    //Exceute the custom command
                    db.Database.ExecuteSqlCommand(cmd.Body);
                    db.SaveChanges();

                    //Remove custom command from database FK
                    var lastSyncQuery = db.Zlastsync.Where(z => z.MappingId == cmd.Id).FirstOrDefault();
                    var mappingTbl    = db.Zmapping.Where(z => z.uuid == cmd.uuid);

                    foreach (Zmapping sqlQuery in mappingTbl)
                    {
                        //Dont need to remove as its never added into sync table
                        // db.Remove(lastSyncQuery);
                        // db.SaveChanges();
                        db.Remove(sqlQuery);
                        db.SaveChanges();
                        //Send delete request to Zudello to remove from mappings table
                        Console.WriteLine(ZudelloLogin.DeleteMapping(token, cmd.uuid));
                    }
                    return(true);
                }

                catch (Exception ex)
                {
                    return(false);
                }
            }
        }
Ejemplo n.º 4
0
        public static async Task GetZudelloMappings(string team = null)
        {
            string Token = ZudelloLogin.Login();
            //Output object should be this
            List <Zconnections> teams = new List <Zconnections>();

            using (var db = new ZudelloContext())
            {
                //Maybe hash the records
                teams = db.Zconnections.ToList();
                await db.DisposeAsync();
            }


            int                                 numberOfLogicalCores = Environment.ProcessorCount;
            List <Thread>                       threads        = new List <Thread>(numberOfLogicalCores);
            int                                 sizeOfOneChunk = (teams.Count / numberOfLogicalCores) + 1;
            ConcurrentBag <Zmapping>            cb             = new ConcurrentBag <Zmapping>();
            ConcurrentDictionary <int, dynamic> cbd            = new ConcurrentDictionary <int, dynamic>();

            for (int i = 0; i < numberOfLogicalCores; i++)
            {
                int ab  = i;
                var thr = new Thread(
                    () =>
                {
                    int count = 0;
                    List <Zconnections> teamChunked = teams.Skip(ab * sizeOfOneChunk)
                                                      .Take(sizeOfOneChunk).ToList();

                    foreach (var t in teamChunked)
                    {
                        dynamic ZudelloTeam       = JsonConvert.DeserializeObject <ExpandoObject>(t.ZudelloCredentials);
                        bool newMappings          = false;
                        string GetMapping         = ZudelloLogin.CallZudelloMapping(Token, ZudelloTeam.team);
                        ZmappingJson MappingFiles = JsonConvert.DeserializeObject <ZmappingJson>(GetMapping);
                        dynamic zudelloObject     = JObject.Parse(GetMapping);

                        foreach (Zmapping map in MappingFiles.data)
                        {
                            Console.WriteLine(map.UpdatedAt);

                            cb.Add(map);
                        }
                    }
                }

                    );

                threads.Add(thr);
            }

            foreach (var thread in threads)
            {
                thread.Start();
            }

            foreach (var thread in threads)
            {
                thread.Join();
            }


            foreach (var map in cb)
            {
                bool newMappings = false;
                using (var db = new ZudelloContext())
                {
                    try {
                        Zmapping AddtoMap = map;

                        Zmapping MapID = db.Zmapping.Where(i => i.DocType == map.DocType &&
                                                           i.Type == map.Type &&
                                                           i.connection_id == map.connection_id).FirstOrDefault();

                        if (MapID.Id > 0)
                        {
                            MapID.Body             = map.Body; //= map.ShallowCopy();
                            MapID.IsOutgoing       = map.IsOutgoing;
                            MapID.ProcessOrder     = map.ProcessOrder;
                            MapID.IsMasterData     = map.IsMasterData;
                            MapID.connection_id    = map.connection_id;
                            MapID.Type             = map.Type;
                            MapID.IntergrationUuid = map.IntergrationUuid;

                            // MapID.uuid = map.uuid;

                            db.Update(MapID);
                            db.SaveChanges();
                            var updateLastSync = (from a in db.Zlastsync
                                                  join c in db.Zmapping on a.MappingId equals c.Id
                                                  where c.DocType == "CallZudelloMapping"
                                                  select a).FirstOrDefault();


                            string pr = String.Format(DateTime.UtcNow.ToString(), "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");
                            updateLastSync.LastSync = pr;
                            //  db.SaveChanges();
                        }
                        else

                        {
                            //add to mapping if it does not exist.
                            db.Zmapping.Add(AddtoMap);
                            db.SaveChanges();
                            Console.WriteLine(String.Format("Doc Type {0} has been added: Type {1} has been added", map.DocType, map.Type));
                            newMappings = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);//some error with mappings

                        try
                        {
                            Zmapping AddtoMap = map;
                            db.Zmapping.Add(AddtoMap);
                            db.SaveChanges();
                            Console.WriteLine(String.Format("Doc Type {0} has been added: Type {1} has been added", map.DocType, map.Type));
                            newMappings = true;
                        }

                        catch (Exception exm)
                        {
                            Console.WriteLine(exm.Message);
                        }


                        finally
                        {
                            if (map.Type == "SQL_LITE_CMD")
                            {
                                Console.WriteLine(Tools.RunSQLLiteCmd(Token, map));
                            }
                        }
                    }
                    finally
                    {
                        if (map.Type == "SQL_LITE_CMD")
                        {
                            Console.WriteLine(Tools.RunSQLLiteCmd(Token, map));
                        }
                    }

                    db.DisposeAsync();
                }

                if (newMappings == true)
                {
                    try //Add into sync table if there are any new records
                    {
                        SetSyncTable().Wait();
                    }

                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }