Skip to content

Commit df1f538

Browse files
committed
Made stuff somewhat nicer ;)
1 parent 57170b5 commit df1f538

24 files changed

+118
-38
lines changed

bin/MataSharp.XML

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bin/MataSharp.dll

0 Bytes
Binary file not shown.

src/MataSharp/Attachment.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Web;
43
using Newtonsoft.Json;
54

@@ -66,6 +65,8 @@ public int CompareTo(Attachment other)
6665
var nameCompared = this.Name.CompareTo(other.Name);
6766
return (nameCompared != 0) ? nameCompared : this.Date.CompareTo(other.Date);
6867
}
68+
69+
public override string ToString() { return this.Name; }
6970
}
7071

7172
internal enum AttachmentType

src/MataSharp/Conversions.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static DateTime ToDateTime(this String original)
2020
/// </summary>
2121
/// <param name="AttachmentType">AttachmentType to give every attachment in the array.</param>
2222
/// <returns>The array as list</returns>
23-
public static List<Attachment> ToList(this Attachment[] currentArray, AttachmentType AttachmentType)
23+
internal static List<Attachment> ToList(this Attachment[] currentArray, AttachmentType AttachmentType)
2424
{
2525
var tmpList = new List<Attachment>(currentArray);
2626
tmpList.ForEach(a => a.Type = AttachmentType);
@@ -54,5 +54,15 @@ public static string DayOfWeekDutch(this DateTime Date)
5454
default: return "";
5555
}
5656
}
57+
58+
/// <summary>
59+
/// Converts the current DateTime instance to a string.
60+
/// </summary>
61+
/// <param name="dutch">If the day should be in Dutch or in English</param>
62+
/// <returns>The current DateTime instance as a string.</returns>
63+
public static string ToString(this DateTime Date, bool dutch)
64+
{
65+
return (dutch) ? (Date.DayOfWeekDutch() + " " + Date.ToString()) : (Date.DayOfWeek + " " + Date.ToString());
66+
}
5767
}
5868
}

src/MataSharp/HTTPClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ public void Post(string URL, string Content)
4848
this.Client.UploadData(URL, System.Text.Encoding.ASCII.GetBytes(Content));
4949
}
5050

51-
public void Delete(string URL, string SessionID)
51+
public void Delete(string URL, string Cookie)
5252
{
5353
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(URL);
5454
req.Method = "DELETE";
55-
req.Headers[HttpRequestHeader.Cookie] = "SESSION_ID=" + SessionID + "&fileDownload=true";
55+
req.Headers[HttpRequestHeader.Cookie] = Cookie;
5656
req.Timeout = 15000;
5757
req.GetResponse();
5858
}

src/MataSharp/MagisterMessage.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ public bool CanSend
6666
get { return (this._CanSend == true && this.Sender != null && this.Recipients != null && !string.IsNullOrEmpty(this.Body) && !string.IsNullOrEmpty(this.Subject)); }
6767
}
6868

69+
public int Index { get; internal set; }
70+
6971
private Mata Mata { get; set; }
7072
#endregion
7173

@@ -143,7 +145,7 @@ public MagisterMessage CreateForwardMessage()
143145
IDKey = this.IDKey,
144146
IDOrginalReceiver = null,
145147
IDOriginal = null,
146-
Body = "<b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.DayOfWeekDutch() + " " + this.SentDate.ToString() + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
148+
Body = "<b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.ToString(true) + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
147149
Deleted = false,
148150
_IsRead = true,
149151
Subject = tmpSubject,
@@ -175,7 +177,7 @@ public MagisterMessage CreateForwardMessage(string ContentAdd)
175177
IDKey = this.IDKey,
176178
IDOrginalReceiver = null,
177179
IDOriginal = null,
178-
Body = ContentAdd + "<br><br>---------------<br><b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.DayOfWeekDutch() + " " + this.SentDate.ToString() + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
180+
Body = ContentAdd + "<br><br>---------------<br><b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.ToString(true) + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
179181
Deleted = false,
180182
_IsRead = true,
181183
Subject = tmpSubject,
@@ -197,7 +199,7 @@ public MagisterMessage CreateReplyToAllMessage(string ContentAdd)
197199
var tmpSubject = (this.Subject[0] != 'R' || this.Subject[1] != 'E' || this.Subject[2] != ':' || this.Subject[3] != ' ') ? "RE: " + this.Subject : this.Subject;
198200

199201
var tmpCC = this.Recipients.ToList().Where(p => p.ID != this.Mata.Person.ID).ToList(); //Should get the current receivers and pull itself out. :)
200-
if (this.CC != null) tmpCC.AddRange(this.CC.ToList().Where(p => p.ID != this.Mata.Person.ID).ToList());
202+
if (this.CC != null) tmpCC.AddRange(this.CC.ToList().Where(p => p.ID != this.Mata.Person.ID));
201203
tmpCC.Sort();
202204

203205
return new MagisterMessage()
@@ -212,7 +214,7 @@ public MagisterMessage CreateReplyToAllMessage(string ContentAdd)
212214
IDKey = this.IDKey,
213215
IDOrginalReceiver = null,
214216
IDOriginal = null,
215-
Body = ContentAdd + "<br><br>---------------<br><b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.DayOfWeekDutch() + " " + this.SentDate.ToString() + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
217+
Body = ContentAdd + "<br><br>---------------<br><b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.ToString(true) + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
216218
Deleted = false,
217219
_IsRead = true,
218220
Subject = tmpSubject,
@@ -245,7 +247,7 @@ public MagisterMessage CreateReplyMessage(string ContentAdd)
245247
IDKey = this.IDKey,
246248
IDOrginalReceiver = null,
247249
IDOriginal = null,
248-
Body = ContentAdd + "<br><br>---------------<br><b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.DayOfWeekDutch() + " " + this.SentDate.ToString() + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
250+
Body = ContentAdd + "<br><br>---------------<br><b>Van:</b> " + this.Sender.Description + "<br><b>Verzonden:</b> " + this.SentDate.ToString(true) + "<br><b>Aan:</b> " + String.Join(", ", this.Recipients.Select(x => x.Name)) + "<br><b>Onderwerp:</b> " + this.Subject + "<br><br>\"" + this.Body + "\"<br><br>",
249251
Deleted = false,
250252
_IsRead = true,
251253
Subject = tmpSubject,
@@ -265,7 +267,7 @@ public void Delete()
265267
if (this.Deleted) return;
266268

267269
this.Deleted = true;
268-
_Session.HttpClient.Delete(this.URL(), this.Mata.SessionID);
270+
_Session.HttpClient.Delete(this.URL(), "SESSION_ID=" + this.Mata.SessionID + "&fileDownload=true");
269271
}
270272

271273
/// <summary>
@@ -373,7 +375,7 @@ internal partial class MagisterStyleMessage
373375
public int IdDeelNameSoort { get; set; }
374376
#endregion
375377

376-
public MagisterMessage ToMagisterMessage()
378+
public MagisterMessage ToMagisterMessage(int index)
377379
{
378380
var tmpReceivers = this.Ontvangers.ConvertAll(p => p.ToPerson(true));
379381
tmpReceivers.Sort();
@@ -401,7 +403,8 @@ public MagisterMessage ToMagisterMessage()
401403
Deleted = this.IsDefinitiefVerwijderd,
402404
IDKey = this.IdKey,
403405
SenderGroupID = this.IdDeelNameSoort,
404-
_CanSend = false
406+
_CanSend = false,
407+
Index = index
405408
};
406409
}
407410

src/MataSharp/MagisterPerson.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,10 @@ internal partial struct MagisterStylePerson
108108

109109
private static List<MagisterStylePerson> GetPersons(string SearchFilter)
110110
{
111-
if (SearchFilter == null || !_Session.checkedPersons.ContainsKey(SearchFilter))
112-
{
113-
if (string.IsNullOrWhiteSpace(SearchFilter) || SearchFilter.Count() < 3) return new List<MagisterStylePerson>();
111+
if (string.IsNullOrWhiteSpace(SearchFilter) || SearchFilter.Length < 3) return new List<MagisterStylePerson>();
114112

113+
if (!_Session.checkedPersons.ContainsKey(SearchFilter))
114+
{
115115
string URL = "https://" + _Session.School.URL + "/api/personen/" + _Session.Mata.UserID + "/communicatie/contactpersonen?q=" + SearchFilter;
116116

117117
string personsRAW = _Session.HttpClient.DownloadString(URL);
@@ -120,7 +120,7 @@ private static List<MagisterStylePerson> GetPersons(string SearchFilter)
120120
_Session.checkedPersons.Add(SearchFilter, persons);
121121
return persons;
122122
}
123-
else return _Session.checkedPersons.First(x => x.Key == SearchFilter).Value;
123+
else return _Session.checkedPersons.First(x => x.Key.ToUpper() == SearchFilter.ToUpper()).Value;
124124
}
125125

126126
public MagisterPerson ToPerson(bool download)
@@ -167,7 +167,7 @@ public MagisterPerson ToPerson(bool download)
167167
Name = tmpName,
168168
Description = tmpPerson.Omschrijving ?? tmpName,
169169
Group = tmpPerson.Groep,
170-
TeacherCode = tmpPerson.DocentCode,
170+
TeacherCode = (!string.IsNullOrWhiteSpace(tmpPerson.DocentCode)) ? tmpPerson.DocentCode : null,
171171
GroupID = tmpPerson.Type,
172172
Initials = tmpPerson.Voorletters,
173173
};

src/MataSharp/Mata.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,18 +110,19 @@ public List<MagisterMessageFolder> GetMessageFolders()
110110
var MessageFolders = JsonConvert.DeserializeObject<MagisterStyleMessageFolderListItem[]>(MessageFoldersRAW);
111111

112112
List<MagisterMessageFolder> tmplst = new List<MagisterMessageFolder>();
113-
foreach (var MessageFolder in MessageFolders)
113+
foreach (var messageFolder in MessageFolders)
114114
{
115+
var tmpFolderType = (Enum.IsDefined(typeof(MessageFolder), messageFolder.Id)) ? (MessageFolder)messageFolder.Id : MessageFolder.Unknown;
115116
tmplst.Add(new MagisterMessageFolder()
116117
{
117-
Name = MessageFolder.Naam,
118-
UnreadMessagesCount = MessageFolder.OngelezenBerichten,
119-
ID = MessageFolder.Id,
120-
ParentID = MessageFolder.ParentId,
121-
Ref = MessageFolder.Ref,
122-
MessagesURI = MessageFolder.BerichtenUri,
118+
Name = messageFolder.Naam,
119+
UnreadMessagesCount = messageFolder.OngelezenBerichten,
120+
ID = messageFolder.Id,
121+
ParentID = messageFolder.ParentId,
122+
Ref = messageFolder.Ref,
123+
MessagesURI = messageFolder.BerichtenUri,
123124
Mata = this,
124-
FolderType = (MessageFolder)MessageFolder.Id
125+
FolderType = tmpFolderType
125126
});
126127
}
127128
return tmplst;
@@ -146,7 +147,7 @@ public List<MagisterPerson> GetPersons(string SearchFilter)
146147
_Session.checkedPersons.Add(SearchFilter, personRaw);
147148
return personRaw.ConvertAll(p => p.ToPerson(false));
148149
}
149-
else return _Session.checkedPersons.First(x => x.Key == SearchFilter).Value.ConvertAll(p => p.ToPerson(false));
150+
else return _Session.checkedPersons.First(x => x.Key.ToUpper() == SearchFilter.ToUpper()).Value.ConvertAll(p => p.ToPerson(false));
150151
}
151152

152153
public List<Homework> GetHomework()

src/MataSharp/MessageFolder.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public enum MessageFolder : int
2525
{ //Defines the folders where messages can be in, server handles it as ID's. We? We handle it as an enum :D
2626
Inbox = -101,
2727
SentMessages = -103,
28-
Bin = -102
28+
Bin = -102,
29+
Unknown = 0
2930
}
3031

3132
internal partial struct MagisterStyleMessageFolderListItem

src/MataSharp/MessageList.cs

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,16 @@ public Message SingleOrDefault(int max, Func<Message, bool> predicate)
256256
else return default(Message);
257257
}
258258

259+
/// <summary>
260+
/// Checks if the given messages exist on the servers.
261+
/// </summary>
262+
/// <param name="item">The item to check if it exists.</param>
263+
/// <returns>A boolean value telling if the given message exists.</returns>
264+
public bool Contains(Message item)
265+
{
266+
return (!item.Deleted && this.Sender.FolderType == item.Folder);
267+
}
268+
259269
private class Enumerator<T> : IEnumerator<T>, IDisposable where T : MagisterMessage
260270
{
261271
private int Next = 0;
@@ -282,7 +292,7 @@ public T Current
282292
URL = "https://" + Mata.School.URL + "/api/personen/" + Mata.UserID + "/communicatie/berichten/mappen/" + Sender.ID + "/berichten/" + CompactMessage.Id;
283293
string MessageRAW = _Session.HttpClient.DownloadString(URL);
284294
var MessageClean = JsonConvert.DeserializeObject<MagisterStyleMessage>(MessageRAW);
285-
return (T)MessageClean.ToMagisterMessage();
295+
return (T)MessageClean.ToMagisterMessage(this.Skip);
286296
}
287297
}
288298

@@ -296,7 +306,7 @@ public T GetAt(int index)
296306
URL = "https://" + Mata.School.URL + "/api/personen/" + Mata.UserID + "/communicatie/berichten/mappen/" + Sender.ID + "/berichten/" + CompactMessage.Id;
297307
string MessageRAW = _Session.HttpClient.DownloadString(URL);
298308
var MessageClean = JsonConvert.DeserializeObject<MagisterStyleMessage>(MessageRAW);
299-
return (T)MessageClean.ToMagisterMessage();
309+
return (T)MessageClean.ToMagisterMessage(index);
300310
}
301311

302312
public List<T> GetRange(int Ammount, int Skip)
@@ -306,13 +316,14 @@ public List<T> GetRange(int Ammount, int Skip)
306316
string CompactMessagesRAW = _Session.HttpClient.DownloadString(URL);
307317
var CompactMessages = JsonConvert.DeserializeObject<MagisterStyleMessageFolder>(CompactMessagesRAW);
308318

309-
var list = new List<T>();
319+
var list = new List<T>(); int i = 0;
310320
foreach (var CompactMessage in CompactMessages.Items)
311321
{
312322
URL = "https://" + Mata.School.URL + "/api/personen/" + this.Mata.UserID + "/communicatie/berichten/mappen/" + Sender.ID + "/berichten/" + CompactMessage.Id;
313323
string MessageRAW = _Session.HttpClient.DownloadString(URL);
314324
var MessageClean = JsonConvert.DeserializeObject<MagisterStyleMessage>(MessageRAW);
315-
list.Add((T)MessageClean.ToMagisterMessage());
325+
list.Add((T)MessageClean.ToMagisterMessage(i));
326+
i++;
316327
}
317328
return list;
318329
}
@@ -324,34 +335,35 @@ public List<T> GetUnread(uint Ammount, uint Skip = 0)
324335
string CompactMessagesRAW = _Session.HttpClient.DownloadString(URL);
325336
var CompactMessages = JsonConvert.DeserializeObject<MagisterStyleMessageFolder>(CompactMessagesRAW);
326337

327-
var list = new List<T>();
338+
var list = new List<T>(); int i = 0;
328339
foreach (var CompactMessage in CompactMessages.Items.Where(m => !m.IsGelezen))
329340
{
330341
URL = "https://" + Mata.School.URL + "/api/personen/" + this.Mata.UserID + "/communicatie/berichten/mappen/" + Sender.ID + "/berichten/" + CompactMessage.Id;
331342
string MessageRAW = _Session.HttpClient.DownloadString(URL);
332343
var MessageClean = JsonConvert.DeserializeObject<MagisterStyleMessage>(MessageRAW);
333-
list.Add((T)MessageClean.ToMagisterMessage());
344+
list.Add((T)MessageClean.ToMagisterMessage(i));
345+
i++;
334346
}
335347
return list;
336348
}
337349

338350
public List<T> GetUnread()
339351
{
340-
var list = new List<T>();
352+
var list = new List<T>(); int index = 0;
341353

342354
for (uint i = 0; (list.Count != this.Sender.UnreadMessagesCount - 1); i++)
343355
{
344356
string URL = "https://" + Mata.School.URL + "/api/personen/" + this.Mata.UserID + "/communicatie/berichten/mappen/" + Sender.ID + "/berichten?$skip=" + (i * 25) + "&$top=" + ((i * 25) + 25);
345357

346358
string CompactMessagesRAW = _Session.HttpClient.DownloadString(URL);
347359
var CompactMessages = JsonConvert.DeserializeObject<MagisterStyleMessageFolder>(CompactMessagesRAW);
348-
349360
foreach (var CompactMessage in CompactMessages.Items.Where(m => !m.IsGelezen))
350361
{
351362
URL = "https://" + Mata.School.URL + "/api/personen/" + this.Mata.UserID + "/communicatie/berichten/mappen/" + Sender.ID + "/berichten/" + CompactMessage.Id;
352363
string MessageRAW = _Session.HttpClient.DownloadString(URL);
353364
var MessageClean = JsonConvert.DeserializeObject<MagisterStyleMessage>(MessageRAW);
354-
list.Add((T)MessageClean.ToMagisterMessage());
365+
list.Add((T)MessageClean.ToMagisterMessage(index));
366+
i++;
355367
}
356368
}
357369
return list;

0 commit comments

Comments
 (0)