using System; using System.Collections.Generic; using System.Linq; using Filtr.Core.FacebookUsers.Data; using MySql.Data.MySqlClient; using Newtonsoft.Json; using PetaPoco.Business; using Sony.Filtr.Database; namespace Sony.Filtr.Core.Facebook { public class FacebookUserFactory { internal void SaveFacebookUser(FacebookUser facebookUser) { using (MySqlConnection conn = DatabaseHandler.GetOpenConnection()) { MySqlCommand cmd = new MySqlCommand("INSERT INTO tblFacebookUser (intFacebookUserID, strEmail, strName, strJSON, intApplicationID) VALUES (@intFacebokUserID, @strEmail, @strName, @strJSON, @intApplicationID) ON DUPLICATE KEY UPDATE strEmail=@strEmail, strName=@strName, strJSON=@strJSON, intApplicationID=@intApplicationID", conn); cmd.Parameters.AddWithValue("@intFacebokUserID", facebookUser.FacebookUserID); cmd.Parameters.AddWithValue("@strEmail", facebookUser.EMail); cmd.Parameters.AddWithValue("@strName", facebookUser.Name); cmd.Parameters.AddWithValue("@strJSON", facebookUser.Json); cmd.Parameters.AddWithValue("@intApplicationID", facebookUser.ApplicationInstanceID); cmd.ExecuteNonQuery(); } } public List GetFacebookUsers() { var facebookUsers = PetaPocoRepository.ReadOnlyInstance.Fetch(); foreach (var facebookUser in facebookUsers) { var FBInfo = TryGetSerializedInfo(facebookUser); facebookUser.NativeFacebookUserInfo = FBInfo; } facebookUsers = facebookUsers.Where(fb => fb.NativeFacebookUserInfo != null).ToList(); return facebookUsers; } private NativeFacebookUserInfo TryGetSerializedInfo(FacebookUser facebookUser) { try { return JsonConvert.DeserializeObject(facebookUser.Json); } catch (Exception) { return null; } } } }