///<summary> ///Handles the remote->local sync buttons. ///does a mass sync to purge the unmatching user records locally or ///checks if the name of a user exists on remote server or ///adds user from remote db to local db with entered name ///Requires: requester; Optionally: name ///</summary> public ActionResult OnPostSync() { string resId = ""; string resName = ""; User user; if (HttpContext.Request.Form["requester"].Contains("mass")) { using (SqlConnection conn = new SqlConnection()) { var query = from us in _context.UserSet select us; if (query.Count() == 0) { return(new JsonResult("No users on db.")); } SqlCommand cmd = new SqlCommand(); cmd.CommandText = "select * from SMP_PERSONEL where PERSONNELNUMBER in("; List <User> usersLocal = new List <User>(); foreach (User us in query) { usersLocal.Add(us); cmd.CommandText += "'" + us.Username + "',"; } cmd.CommandText = cmd.CommandText.Substring(0, cmd.CommandText.Length - 1); cmd.CommandText += ");"; string IzinDbPath = Configuration.GetSection("Connections:IzinMsSqlDB").Value; conn.ConnectionString = IzinDbPath; SqlDataReader reader; System.Console.WriteLine(cmd.CommandText); cmd.Connection = conn; conn.Open(); reader = cmd.ExecuteReader(); string tmp = ""; while (reader.Read()) { tmp += (string)reader.GetValue(0); } foreach (User u in usersLocal) { if (tmp.Contains(u.Username)) { continue; } _context.Remove(u); } } } else { Name = HttpContext.Request.Form["name"]; try { using (SqlConnection conn = new SqlConnection()) { try { user = (User)_context.UserSet.Single(b => (b.Name == Name)); return(new JsonResult("User already exists in local db")); } catch (Exception e) { System.Console.WriteLine(e.Message); } string IzinDbPath = Configuration.GetSection("Connections:IzinMsSqlDB").Value; conn.ConnectionString = IzinDbPath; SqlCommand cmd = new SqlCommand(); SqlDataReader reader; if (("ĞŞÇİÜÖ").Contains(Name.First())) { /*UNSOLVED,worked around: * where EMPLNAME like user.Name not working. */ cmd.CommandText = "select * from SMP_PERSONEL"; } else { cmd.CommandText = "select * from SMP_PERSONEL where EMPLNAME like '" + Name.First() + "%'; "; } System.Console.WriteLine(cmd.CommandText); cmd.Connection = conn; conn.Open(); reader = cmd.ExecuteReader(); bool resIsEmpty = true; while (reader.Read()) { if (!((string)reader.GetValue(1)).Contains(Name)) { continue; } resIsEmpty = false; resId = (string)reader.GetValue(0); resName = (string)reader.GetValue(1); } if (resIsEmpty) { return(new JsonResult("No such users at remote db")); } } } catch (Exception e) { System.Console.WriteLine(e.Message); return(new JsonResult("No data on repo.")); } } if (HttpContext.Request.Form["requester"].Contains("checker")) { return(new JsonResult(resId + " - " + resName)); } else if (!HttpContext.Request.Form["requester"].Contains("mass")) { try { user = (User)_context.UserSet.Single(b => (b.Username == resId)); return(new JsonResult("User already exists in local db")); } catch (Exception e) { System.Console.WriteLine(e.Message); } _context.UserSet.Add(new User { Name = resName, Username = resId, Role = 2, DaysOff = 15, Password = Crypt.Encrypt("sifre"), StandartWorkHoursId = 1 }); _context.SaveChanges(); user = (User)_context.UserSet.Single(b => (b.Name == resName)); _context.AdminAuthorizationSet.Add(new AdminAuthorization { Customize = false, Requests = false, Authority = false, UserId = user.Id }); _context.SaveChanges(); return(new JsonResult("Added user successfully")); } else { return(new JsonResult("DONE")); } }