CPE_learningsite
This repository has no backups
This repository's network speed is throttled to 100KB/sec
Upgrade your account to fix these warnings, or use backups.vc for automated backups
Diff Revisions 4cd176 ... vs d90493 ... for /CPE/CPE.App/CPE.App.Api/Helpers/TinCanHelper.cs
@@ -4,6 +4,7 @@ | |||
4 | 4 | using System.Collections.Generic; | |
5 | 5 | using System.Linq; | |
6 | 6 | using System.Web; | |
7 | + | using Newtonsoft.Json; | |
7 | 8 | ||
8 | 9 | namespace CPE.App.Api.Helpers | |
9 | 10 | { | |
@@ -13,10 +14,10 @@ | |||
13 | 14 | { | |
14 | 15 | // statement.Verb.Id=http://adlnet.gov/expapi/verbs/answered | |
15 | 16 | // statement.Verb.Id=http://adlnet.gov/expapi/verbs/experienced | |
16 | - | ||
17 | + | var dtNow = DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"); | |
17 | 18 | if (statement.Verb.Id.IndexOf("passed")>-1) | |
18 | 19 | { | |
19 | - | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} statement.Verb.Id={1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), statement.Verb.Id); | |
20 | + | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} statement.Verb.Id={1}. statement={2}", dtNow, statement.Verb.Id, JsonConvert.SerializeObject(statement)); | |
20 | 21 | ||
21 | 22 | //parse statement to db variables | |
22 | 23 | var email = statement.Actor.Mbox.Substring(7); | |
@@ -24,15 +25,40 @@ | |||
24 | 25 | var lname = statement.Actor.Name.Substring(statement.Actor.Name.LastIndexOf(" ") + 1); | |
25 | 26 | var courseUrl = statement.Object.Id.Substring(statement.Object.Id.LastIndexOf("/") + 1); | |
26 | 27 | var courseName = statement.Object.Definition.Name.EnUs; | |
28 | + | bool done; | |
27 | 29 | ||
28 | 30 | //cpe has test data with multiple, currently valid purchases of the same course for one user, which causes problems but is not a real-world problem. | |
29 | 31 | //elucidat tracks all users globally by email address so a tincan statement won't identify a specific purchase here | |
30 | 32 | //unless we create unique email addy (e.g. email+ticket@mail.com) when originally logging them in to content | |
31 | - | var course = BaseController.Database.PurchasedCourses.FirstOrDefault(c => c.Email == email && c.ContentUrl == courseUrl && c.CertificateDate == null); | |
33 | + | var course = BaseController.Database.PurchasedCourses.FirstOrDefault(c => | |
34 | + | c.Email == email && c.ContentUrl == courseUrl && c.CertificateDate == null); | |
32 | 35 | if (course == null) | |
33 | 36 | { | |
34 | - | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} no action, cert already earned email={1} courseName={2}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), email, courseName); | |
37 | + | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} no action 1, cert already earned email={1} courseName={2}", dtNow, email, courseName); | |
35 | 38 | //no action, cert already earned | |
39 | + | //try | |
40 | + | //{ | |
41 | + | // course = BaseController.Database.PurchasedCourses.FirstOrDefault(c => c.Email == email && c.ContentUrl == courseUrl && c.CertificateDate!=null); | |
42 | + | // if (course == null) | |
43 | + | // { | |
44 | + | // Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} no action, course == null, select courseName={1} from db with CertificateDate.", dtNow, courseName); | |
45 | + | // } | |
46 | + | ||
47 | + | // Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} no action, select courseName={1} from db with CertificateDate. course={2}", dtNow, courseName, JsonConvert.SerializeObject(course)); | |
48 | + | ||
49 | + | // done = SendEmailHelper.SendCertificateEmail(course); | |
50 | + | ||
51 | + | // Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} no action, send courseName={1} from db to email={2} successfully", dtNow, courseName, email); | |
52 | + | //} | |
53 | + | //catch (Exception exception) | |
54 | + | //{ | |
55 | + | // var innerException = ""; | |
56 | + | // if (exception.InnerException != null) innerException = exception.InnerException.ToString(); | |
57 | + | // Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} email={1} courseName={2} exception={3}", dtNow, email, courseName, exception.ToString()+ innerException); | |
58 | + | //} | |
59 | + | ||
60 | + | //Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} cert sent email={1} courseName={2}", dtNow, email, courseName); | |
61 | + | ||
36 | 62 | return true; | |
37 | 63 | } | |
38 | 64 | ||
@@ -43,12 +69,12 @@ | |||
43 | 69 | } | |
44 | 70 | catch (Exception exception) | |
45 | 71 | { | |
46 | - | Utilities.LogWrapper.Error("[TinCanHelper][HandleStatement] {0} email={1} courseName={2} exception={3}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), email, courseName, exception.ToString()); | |
72 | + | Utilities.LogWrapper.Error("[TinCanHelper][HandleStatement] {0} email={1} courseName={2} exception={3}", dtNow, email, courseName, exception.ToString()); | |
47 | 73 | } | |
48 | 74 | ||
49 | - | var done = SendEmailHelper.SendCertificateEmail(course); | |
75 | + | done = SendEmailHelper.SendCertificateEmail(course); | |
50 | 76 | ||
51 | - | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} cert sent email={1} courseName={2}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), email, courseName); | |
77 | + | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} cert sent email={1} courseName={2}", dtNow, email, courseName); | |
52 | 78 | ||
53 | 79 | //umm why am i not returning done here? | |
54 | 80 | return true; | |
@@ -57,7 +83,7 @@ | |||
57 | 83 | ||
58 | 84 | if (statement.Verb.Id.IndexOf("failed") > -1) | |
59 | 85 | { | |
60 | - | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} statement.Verb.Id={1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), statement.Verb.Id); | |
86 | + | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} statement.Verb.Id={1}. statement={2}", dtNow, statement.Verb.Id, JsonConvert.SerializeObject(statement)); | |
61 | 87 | ||
62 | 88 | //parse statement to db variables | |
63 | 89 | var email = statement.Actor.Mbox.Substring(7); | |
@@ -76,7 +102,7 @@ | |||
76 | 102 | return true; | |
77 | 103 | } | |
78 | 104 | ||
79 | - | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} course.Ticket={1}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), course.Ticket); | |
105 | + | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} course.Ticket={1}", dtNow, course.Ticket); | |
80 | 106 | ||
81 | 107 | if (!course.FailedAttempts.HasValue) | |
82 | 108 | { | |
@@ -89,10 +115,10 @@ | |||
89 | 115 | } | |
90 | 116 | catch (Exception exception) | |
91 | 117 | { | |
92 | - | Utilities.LogWrapper.Error("[TinCanHelper][HandleStatement] {0} email={1} courseName={2} exception={3}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), email, courseName, exception.ToString()); | |
118 | + | Utilities.LogWrapper.Error("[TinCanHelper][HandleStatement] {0} email={1} courseName={2} exception={3}", dtNow, email, courseName, exception.ToString()); | |
93 | 119 | } | |
94 | 120 | ||
95 | - | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} failure recorded email={1} courseName={2}", DateTime.UtcNow.ToString("yyyyMMdd_HHmmss"), email, courseName); | |
121 | + | Utilities.LogWrapper.Info("[TinCanHelper][HandleStatement] {0} failure recorded email={1} courseName={2}", dtNow, email, courseName); | |
96 | 122 | ||
97 | 123 | return true; | |
98 | 124 | } |