Guest User

Untitled

a guest
Oct 12th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.47 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. // <auto-generated>
  3. // This code was generated by a tool.
  4. // Changes to this file will be lost if the code is regenerated.
  5. // </auto-generated>
  6. //------------------------------------------------------------------------------
  7. namespace draugiem_wpf_v01.domain
  8. {
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Data;
  12. using System.Linq;
  13. using System.Text;
  14. using draugiem_wpf_v01.shared;
  15. using Npgsql;
  16.  
  17. public class MessageRepository
  18. {
  19. private static NpgsqlConnection conection = new NpgsqlConnection("Server=localhost;Port=5432;Database=draugiem_v13;User Id=draugiem;Password=draugiem;");
  20.  
  21. private DataTable dt_messages = new DataTable();
  22. private NpgsqlDataAdapter adapter_message()
  23. {
  24. NpgsqlDataAdapter adapter = new NpgsqlDataAdapter();
  25. NpgsqlCommand upCmd = new NpgsqlCommand("UPDATE messages SET message_id=@message_id, sender_id=@sender_id, receiver_id=@receiver_id, content=@content,"
  26. + "header=@header, date_sent=@date_sent WHERE message_id=@message_id", conection);
  27. NpgsqlCommand sCmd = new NpgsqlCommand("SELECT * FROM messages", conection);
  28. NpgsqlCommand delCmd = new NpgsqlCommand("DELETE FROM messages WHERE message_id=@message_id", conection);
  29. NpgsqlCommand addCmd = new NpgsqlCommand("INSERT INTO messages (sender_id,receiver_id,content,header,date_sent)"
  30. + "VALUES(@sender_id,@receiver_id,@content,@header,@date_sent)", conection);
  31.  
  32. upCmd.Parameters.Add(new NpgsqlParameter("@sender_id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "sender_id"));
  33. upCmd.Parameters.Add(new NpgsqlParameter("@receiver_id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "receiver_id"));
  34. upCmd.Parameters.Add(new NpgsqlParameter("@content", NpgsqlTypes.NpgsqlDbType.Text, 0, "content"));
  35. upCmd.Parameters.Add(new NpgsqlParameter("@header", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "header"));
  36. upCmd.Parameters.Add(new NpgsqlParameter("@date_sent", NpgsqlTypes.NpgsqlDbType.Date, 0, "date_sent"));
  37. upCmd.Parameters.Add(new NpgsqlParameter("@message_id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "message_id"));
  38.  
  39. addCmd.Parameters.Add(new NpgsqlParameter("@sender_id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "sender_id"));
  40. addCmd.Parameters.Add(new NpgsqlParameter("@receiver_id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "receiver_id"));
  41. addCmd.Parameters.Add(new NpgsqlParameter("@content", NpgsqlTypes.NpgsqlDbType.Text, 0, "content"));
  42. addCmd.Parameters.Add(new NpgsqlParameter("@header", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "header"));
  43. addCmd.Parameters.Add(new NpgsqlParameter("@date_sent", NpgsqlTypes.NpgsqlDbType.Date, 0, "date_sent"));
  44.  
  45. delCmd.Parameters.Add(new NpgsqlParameter("@message_id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "message_id"));
  46. adapter.SelectCommand = sCmd;
  47. adapter.UpdateCommand = upCmd;
  48. adapter.InsertCommand = addCmd;
  49. adapter.DeleteCommand = delCmd;
  50. return adapter;
  51. }
  52.  
  53. public List<MessageDTO> loadAllUserMessages(int user_id, string type, string name, DateTime from, DateTime to)
  54. {
  55. read_data();
  56. List<MessageDTO> messagesList = new List<MessageDTO>();
  57. foreach (DataRow dr in dt_messages.Rows)
  58. {
  59. MessageDTO message = new MessageDTO();
  60. if ((Convert.ToInt32(dr["receiver_id"]) == user_id || Convert.ToInt32(dr["sender_id"]) == user_id))
  61. {
  62. if (from != DateTime.MinValue && to != DateTime.MinValue)
  63. {
  64. TimeSpan duration = new TimeSpan(0, 23, 59, 59);
  65. to = to.Add(duration);
  66. if (from <= Convert.ToDateTime(dr["date_sent"]) && to >= Convert.ToDateTime(dr["date_sent"]))
  67. {
  68. bool isNameFound = FindNameInSendrReceiver(name, dr);
  69. //int FirstChr = Convert.ToString(dr["header"]).IndexOf(name);
  70. //int SecondChr = Convert.ToString(dr["header"]).IndexOf(name);
  71.  
  72. if (string.IsNullOrEmpty(name) || isNameFound)
  73. {
  74. message = SwitchTypes(user_id, type, messagesList, dr, message);
  75. }
  76.  
  77. }
  78. duration = new TimeSpan(0, -23, -59, -59);
  79. to = to.Add(duration);
  80. }
  81. else if (!string.IsNullOrEmpty(name))
  82. {
  83. bool isNameFound = FindNameInSendrReceiver(name, dr);
  84. if (isNameFound)
  85. {
  86. message = SwitchTypes(user_id, type, messagesList, dr, message);
  87. }
  88. }
  89. else
  90. {
  91. message = SwitchTypes(user_id, type, messagesList, dr, message);
  92. }
  93. }
  94. }
  95. return messagesList;
  96. }
  97.  
  98. private MessageDTO SwitchTypes(int user_id, string type, List<MessageDTO> messagesList, DataRow dr, MessageDTO message)
  99. {
  100. switch (type)
  101. {
  102. case "ALL":
  103. message = getMessage(dr, user_id);
  104. messagesList.Add(message);
  105. break;
  106. case "SENT":
  107. if (Convert.ToInt32(dr["sender_id"]) == user_id)
  108. {
  109. message = getMessage(dr, user_id);
  110. messagesList.Add(message);
  111. }
  112. break;
  113. case "RECEIVED":
  114. if (Convert.ToInt32(dr["receiver_id"]) == user_id)
  115. {
  116. message = getMessage(dr, user_id);
  117. messagesList.Add(message);
  118. }
  119. break;
  120. default:
  121. break;
  122. }
  123. return message;
  124. }
  125.  
  126. private static bool FindNameInSendrReceiver(string name, DataRow dr)
  127. {
  128. string[] str = name.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  129. bool isNameFound = false;
  130.  
  131. if (str.Length < 3)
  132. {
  133. foreach (var item in str)
  134. {
  135. UserRepository ur = new UserRepository();
  136. UserDTO receiverUser = ur.getUser(Convert.ToInt32(dr["receiver_id"]));
  137. UserDTO senderUser = ur.getUser(Convert.ToInt32(dr["sender_id"]));
  138. if (receiverUser.first_name.IndexOf(item) > -1 || receiverUser.last_name.IndexOf(item) > -1
  139. || senderUser.first_name.IndexOf(item) > -1 || senderUser.last_name.IndexOf(item) > -1)
  140. {
  141. isNameFound = true;
  142. }
  143. }
  144.  
  145. }
  146. return isNameFound;
  147. }
  148.  
  149. private MessageDTO getMessage(DataRow dr, int user_id)
  150. {
  151. MessageDTO message = new MessageDTO();
  152. message.receiver_id = Convert.ToInt32(dr["receiver_id"]);
  153. message.sender_id = Convert.ToInt32(dr["sender_id"]);
  154. message.message_id = Convert.ToInt32(dr["message_id"]);
  155. message.header = Convert.ToString(dr["header"]);
  156. message.content = Convert.ToString(dr["content"]);
  157. message.date_sent = Convert.ToDateTime(dr["date_sent"]);
  158. message.isRecieved = (Convert.ToInt32(dr["sender_id"]) == user_id) ? false : true;
  159. return message;
  160. }
  161.  
  162. public MessageDTO getMessageByMessageId(int message_id)
  163. {
  164. read_data();
  165. MessageDTO message = new MessageDTO();
  166. foreach (DataRow dr in dt_messages.Rows)
  167. {
  168. if (Convert.ToInt32(dr["message_id"]) == message_id)
  169. {
  170. message = getMessage(dr, -1);
  171. }
  172.  
  173. }
  174. return message;
  175. }
  176.  
  177. public void read_data()
  178. {
  179.  
  180. dt_messages = new DataTable();
  181. adapter_message().Fill(dt_messages);
  182. }
  183.  
  184. public void composeNewMessage(int receiver_id, int sender_id, string header, string content)
  185. {
  186. read_data();
  187. DataRow newMessage = dt_messages.NewRow();
  188.  
  189. newMessage["receiver_id"] = receiver_id;
  190. newMessage["sender_id"] = sender_id;
  191. newMessage["header"] = header;
  192. newMessage["content"] = content;
  193. newMessage["date_sent"] = DateTime.Now;
  194.  
  195. dt_messages.Rows.Add(newMessage);
  196. adapter_message().Update(dt_messages);
  197. }
  198.  
  199. public void deleteMessageByMessageId(int message_id)
  200. {
  201. read_data();
  202. foreach (DataRow dr in dt_messages.Rows)
  203. {
  204. if (Convert.ToInt32(dr["message_id"]) == message_id)
  205. {
  206. //dt_messages.Rows.Remove(dr);
  207. dt_messages.Rows[dt_messages.Rows.IndexOf(dr)].Delete();
  208. break;
  209. }
  210.  
  211. }
  212.  
  213. adapter_message().Update(dt_messages);
  214. dt_messages.AcceptChanges();
  215. }
  216. }
  217. }
Add Comment
Please, Sign In to add comment