RootObject Check(RootObject rb_local)
 {
     if (rb_local.Contact != null)
     {
         for (int i = 0; i < rb_local.Contact.Count; i++)
         {
             for (int j = i + 1; j < rb_local.Contact.Count; j++)
             {
                 if (rb_local.Contact[i].Name.Equals(rb_local.Contact[j].Name))
                 {
                     if (rb_local.Contact[i].ContactInfos != null && rb_local.Contact[i].ContactInfos.Count == rb_local.Contact[j].ContactInfos.Count)
                     {
                         for (int m = 0; m < rb_local.Contact[i].ContactInfos.Count; m++)
                         {
                             if (!rb_local.Contact[i].ContactInfos[m].Number.Equals(rb_local.Contact[j].ContactInfos[m].Number))
                             {
                                 m = rb_local.Contact[i].ContactInfos.Count;
                             }
                             else if (m == rb_local.Contact[i].ContactInfos.Count - 1)
                             {
                                 rb_local.Contact.RemoveAt(j);
                                 m = rb_local.Contact[i].ContactInfos.Count;
                                 j--;
                             }
                         }
                     }
                 }
                 else
                 {
                     if (rb_local.Contact[i].ContactInfos != null)
                     {
                         for (int m = 0; m < rb_local.Contact[i].ContactInfos.Count; m++)
                         {
                             ContactInfos i1 = rb_local.Contact[i].ContactInfos[m];
                             for (int n = m + 1; n < rb_local.Contact[i].ContactInfos.Count; n++)
                             {
                                 ContactInfos i2 = rb_local.Contact[i].ContactInfos[n];
                                 if (i1.Number.Equals(i2.Number) && i1.Type.Equals(i2.Type) && i1.EmailOrNumber.Equals(i2.EmailOrNumber))
                                 {
                                     rb_local.Contact[i].ContactInfos.RemoveAt(n);
                                     n--;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return(rb_local);
 }
Example #2
0
 public override int GetHashCode()
 {
     return(ContactInfos.GetHashCode() + ID.GetHashCode() + Name.GetHashCode());
 }
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            String     UserName = context.Request["UserName"];
            String     contact  = context.Request["Contact"];
            String     record   = context.Request["Record"];
            String     res      = "";
            RootObject rb_local = JsonConvert.DeserializeObject <RootObject>("{\"Contact\":" + contact + ",\"Record\":" + record + "}");

            rb_local = Check(rb_local);
            String sql = "select * from user where UserName=@u ORDER BY ID;";

            MySqlParameter[] pms =
            {
                new MySqlParameter("@u", UserName)
            };
            MySqlHelper     helper   = new MySqlHelper();
            MySqlDataReader reader   = helper.getMySqlReader(sql, pms);
            RootObject      rb_cloud = new RootObject();

            rb_cloud.Contact = new List <Contact>();
            rb_cloud.Record  = new List <Record>();
            if (reader.HasRows)
            {
                reader.Read();
                int    id = reader.GetInt32(0);
                String u = reader.GetString(1), p = reader.GetString(2), s = reader.GetString(3), l = reader.GetString(4), r = reader.GetString(5);
                reader.Dispose();
                helper.mysqlcom.Dispose();
                helper.mysqlcon.Close();
                helper.mysqlcon.Dispose();
                res = "{\"ID\":" + id + ",\"UserName\":\"" + u + "\",\"Password\":\"" + p + "\",\"Sex\":\"" + s + "\",\"Location\":\"" + l + "\",\"Remark\":\"" + r + "\",\"Contact\":[";
                sql = "select * from contact where User_ID=@id ORDER BY ID;";
                MySqlHelper     helper1 = new MySqlHelper();
                MySqlDataReader reader1 = helper1.getMySqlReader(sql, new MySqlParameter("@id", id));
                while (reader1.Read())
                {
                    Contact con = new Contact();
                    con.ContactInfos = new List <ContactInfos>();
                    con.ID           = reader1.GetInt32(0) + "";
                    con.Name         = reader1.GetString(2);
                    con.Birthday     = Convert.IsDBNull(reader1[3])?"":reader1.GetString(3);
                    MySqlHelper         helper12     = new MySqlHelper();
                    MySqlDataReader     reader12     = helper12.getMySqlReader("select * from contact_info where Contact_ID=" + reader1.GetInt32(0) + "  ORDER BY ID");
                    List <ContactInfos> contactInfos = new List <ContactInfos>();
                    while (reader12.Read())
                    {
                        ContactInfos ci = new ContactInfos();
                        ci.EmailOrNumber = reader12.GetInt32(0) + "";
                        ci.ID            = reader12.GetInt32(1) + "";
                        ci.Number        = reader12.GetString(2);
                        ci.Type          = reader12.GetString(3);
                        contactInfos.Add(ci);
                    }
                    con.ContactInfos = contactInfos;
                    rb_cloud.Contact.Add(con);
                    reader12.Dispose();
                    helper12.mysqlcom.Dispose();
                    helper12.mysqlcon.Close();
                    helper12.mysqlcon.Dispose();
                }
                reader1.Dispose();
                helper1.mysqlcom.Dispose();
                helper1.mysqlcon.Close();
                helper1.mysqlcon.Dispose();
                rb_cloud = Check(rb_cloud);
                sql      = "select * from record where User_ID=@id ORDER BY ID;";
                MySqlHelper     helper2 = new MySqlHelper();
                MySqlDataReader reader2 = helper2.getMySqlReader(sql, new MySqlParameter("@id", id));
                while (reader2.Read())
                {
                    Record rec = new Record();
                    rec.ID       = reader2.GetInt32(0) + "";
                    rec.Number   = reader2.GetString(1);
                    rec.Duration = reader2.GetString(2);
                    rec.Date     = reader2.GetString(3);
                    rec.Type     = reader2.GetString(5);
                    rb_cloud.Record.Add(rec);
                }
                reader2.Dispose();
                helper2.mysqlcom.Dispose();
                helper2.mysqlcon.Close();
                helper2.mysqlcon.Dispose();
                Contact      a, b;
                ContactInfos c, d;
                if (rb_cloud.Contact.Count > 0)
                {
                    for (int i = 0; i < rb_cloud.Contact.Count; i++)
                    {
                        bool flag = false;
                        for (int j = 0; j < rb_local.Contact.Count; j++)
                        {
                            a = rb_local.Contact[j];
                            b = rb_cloud.Contact[i];
                            if (a.ContactInfos == null)
                            {
                                a.ContactInfos = new List <ContactInfos>();
                            }
                            if (a.Name.Equals(b.Name) && a.ContactInfos.Count == b.ContactInfos.Count)
                            {
                                if (a.ContactInfos.Count == 0)
                                {
                                    rb_local.Contact.RemoveAt(j);
                                    flag = true;
                                    j--;
                                }
                                else
                                {
                                    for (int k = 0; k < a.ContactInfos.Count; k++)
                                    {
                                        c = a.ContactInfos[k];
                                        d = b.ContactInfos[k];
                                        if (!c.EmailOrNumber.Equals(d.EmailOrNumber) || !c.Number.Equals(d.Number
                                                                                                         ) || !c.Type.Equals(d.Type))
                                        {
                                            k = a.ContactInfos.Count;
                                        }
                                        else if (k == a.ContactInfos.Count - 1)
                                        {
                                            rb_local.Contact.RemoveAt(j);
                                            flag = true;
                                            j--;
                                        }
                                    }
                                }
                            }
                        }
                        if (flag == true)
                        {
                            if (rb_cloud.Contact.Count > i)
                            {
                                for (int k = i + 1; k < rb_cloud.Contact.Count; k++)
                                {
                                    a = rb_cloud.Contact[k];
                                    b = rb_cloud.Contact[i];
                                    if (a.ContactInfos == null)
                                    {
                                        a.ContactInfos = new List <ContactInfos>();
                                    }
                                    if (a.Name.Equals(b.Name) && a.ContactInfos.Count == b.ContactInfos.Count)
                                    {
                                        if (a.ContactInfos.Count == 0)
                                        {
                                            rb_cloud.Contact.RemoveAt(k);
                                            flag = true;
                                            k--;
                                        }
                                        for (int m = 0; m < a.ContactInfos.Count; m++)
                                        {
                                            for (int n = 0; m < b.ContactInfos.Count; n++)
                                            {
                                                c = a.ContactInfos[m];
                                                d = b.ContactInfos[n];
                                                if (c.EmailOrNumber.Equals(d.EmailOrNumber) && c.Number.Equals(d.Number
                                                                                                               ) && c.Type.Equals(d.Type) && m == a.ContactInfos.Count - 1)
                                                {
                                                    rb_cloud.Contact.RemoveAt(k);
                                                    flag = true;
                                                    k--;
                                                }
                                                else if (c.EmailOrNumber.Equals(d.EmailOrNumber) && c.Number.Equals(d.Number) && c.Type.Equals(d.Type))
                                                {
                                                }
                                                else
                                                {
                                                    k = a.ContactInfos.Count;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            rb_cloud.Contact.RemoveAt(i);
                            i--;
                        }
                    }
                }
                Record r1, r2;
                if (rb_cloud.Record.Count > 0)
                {
                    for (int i = 0; i < rb_cloud.Record.Count; i++)
                    {
                        bool flag = false;
                        for (int j = 0; j < rb_local.Record.Count; j++)
                        {
                            r1 = rb_local.Record[j];
                            r2 = rb_cloud.Record[i];
                            if (r1.Type.Equals(r2.Type) && r1.Number.Equals(r2.Number) && r1.ID.Equals(r2.ID) && r1.Duration.Equals(r2.Duration) && r1.Date.Equals(r2.Date))
                            {
                                rb_local.Record.RemoveAt(j);
                                j--;
                                flag = true;
                            }
                        }
                        if (flag)
                        {
                            rb_cloud.Record.RemoveAt(i);
                            i--;
                        }
                    }
                }

                MySqlHelper helper3 = new MySqlHelper();
                string      ss      = "insert into contact (ID,User_ID,Name) values ";
                sql = "insert into contact_info (EmailOrNumber,Number,Type,Contact_ID) values ";
                if (rb_local.Contact != null)
                {
                    for (int i = 0; i < rb_local.Contact.Count; i++)
                    {
                        if (i == 0)
                        {
                            ss += "(" + (int)(id * 10000 + i) + "," + id + ",\"" + rb_local.Contact[i].Name + "\")";
                        }
                        else
                        {
                            ss += ",(" + (int)(id * 10000 + i) + "," + id + ",\"" + rb_local.Contact[i].Name + "\")";
                        }
                        if (rb_local.Contact[i].ContactInfos != null)
                        {
                            for (int j = 0; j < rb_local.Contact[i].ContactInfos.Count; j++)
                            {
                                if (sql.Length < 75)
                                {
                                    sql += "(" + rb_local.Contact[i].ContactInfos[j].EmailOrNumber + ",\"" + rb_local.Contact[i].ContactInfos[j].Number + "\",\"" + rb_local.Contact[i].ContactInfos[j].Type + "\"," + (int)(id * 10000 + i) + ")";
                                }
                                else
                                {
                                    sql += ",(" + rb_local.Contact[i].ContactInfos[j].EmailOrNumber + ",\"" + rb_local.Contact[i].ContactInfos[j].Number + "\",\"" + rb_local.Contact[i].ContactInfos[j].Type + "\"," + (int)(id * 10000 + i) + ")";
                                }
                            }
                        }
                    }
                    if (rb_local.Contact.Count != 0)
                    {
                        helper3.getMySqlCom(ss);
                    }
                    if (rb_local.Contact.Count != 0)
                    {
                        helper3.getMySqlCom(sql);
                    }
                }
                ss = "insert into record (Number,Duration,Date,User_ID,Type) values ";
                if (rb_local.Record != null)
                {
                    for (int i = 0; i < rb_local.Record.Count; i++)
                    {
                        if (i == 0)
                        {
                            ss += "(\"" + rb_local.Record[i].Number + "\",\"" + rb_local.Record[i].Duration + "\",\"" + rb_local.Record[i].Date + "\"," + id + ",\"" + rb_local.Record[i].Type + "\")";
                        }
                        else
                        {
                            ss += ",(\"" + rb_local.Record[i].Number + "\",\"" + rb_local.Record[i].Duration + "\",\"" + rb_local.Record[i].Date + "\"," + id + ",\"" + rb_local.Record[i].Type + "\")";
                        }
                    }
                    if (rb_local.Record.Count != 0)
                    {
                        helper3.getMySqlCom(ss);
                    }
                }
                rb_local.Record.AddRange(rb_cloud.Record);
                rb_local.Contact.AddRange(rb_cloud.Contact);
                if (rb_local.Contact != null)
                {
                    for (int i = 0; i < rb_local.Contact.Count; i++)
                    {
                        if (i == 0)
                        {
                            res += "{\"ID\":" + (int)(id * 10000 + i) + ",\"Name\":\"" + rb_local.Contact[i].Name + "\",\"Birthday\":\"" + rb_local.Contact[i].Birthday + "\",\"ContactInfos\":[";
                        }
                        else
                        {
                            res += ",{\"ID\":" + (int)(id * 10000 + i) + ",\"Name\":\"" + rb_local.Contact[i].Name + "\",\"Birthday\":\"" + rb_local.Contact[i].Birthday + "\",\"ContactInfos\":[";
                        }
                        if (rb_local.Contact[i].ContactInfos != null)
                        {
                            for (int j = 0; j < rb_local.Contact[i].ContactInfos.Count; j++)
                            {
                                if (j == 0)
                                {
                                    res += "{\"ID\":" + 0 + ",\"EmailOrNumber\":" + rb_local.Contact[i].ContactInfos[j].EmailOrNumber + ",\"Number\":\"" + rb_local.Contact[i].ContactInfos[j].Number + "\",\"Type\":\"" + rb_local.Contact[i].ContactInfos[j].Type + "\"}";
                                }
                                else
                                {
                                    res += ",{\"ID\":" + 0 + ",\"EmailOrNumber\":" + rb_local.Contact[i].ContactInfos[j].EmailOrNumber + ",\"Number\":\"" + rb_local.Contact[i].ContactInfos[j].Number + "\",\"Type\":\"" + rb_local.Contact[i].ContactInfos[j].Type + "\"}";
                                }
                            }
                        }
                        res += "]}";
                    }
                }
                res += "],\"Record\":[";
                if (rb_local.Record != null)
                {
                    for (int i = 0; i < rb_local.Record.Count; i++)
                    {
                        if (i == 0)
                        {
                            res += "{\"ID\":0,\"Number\":\"" + rb_local.Record[i].Number + "\",\"Duration\":\"" + rb_local.Record[i].Duration + "\",\"Date\":\"" + rb_local.Record[i].Date + "\",\"Type\":\"" + rb_local.Record[i].Type + "\"}";
                        }
                        else
                        {
                            res += ",{\"ID\":0,\"Number\":\"" + rb_local.Record[i].Number + "\",\"Duration\":\"" + rb_local.Record[i].Duration + "\",\"Date\":\"" + rb_local.Record[i].Date + "\",\"Type\":\"" + rb_local.Record[i].Type + "\"}";
                        }
                    }
                }
                res += "]}";
                context.Response.Write(res);
                reader.Close();
                helper.mysqlcom.Dispose();
                helper.mysqlcon.Close();
                helper.mysqlcon.Dispose();
                reader1.Close();
                helper1.mysqlcom.Dispose();
                helper1.mysqlcon.Close();
                helper1.mysqlcon.Dispose();
            }
            else
            {
                context.Response.Write("Error");
            }
            if (!reader.IsClosed)
            {
                reader.Close();
                helper.mysqlcom.Dispose();
                helper.mysqlcon.Close();
                helper.mysqlcon.Dispose();
            }
        }
Example #4
0
        public bool Equals(Contact other)
        {
            Contact con = (Contact)other;

            return(ContactInfos.Equals(con.ContactInfos) && ID.Equals(con.ID) && Name.Equals(con.Name));
        }