Пример #1
0
        ///<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"));
            }
        }