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); } }
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); } }
/* 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); } } }
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); } } } }