Skip to content

Commit b97b654

Browse files
authored
Merge pull request #24 from mathisjay/issue-15
issue-15
2 parents 9ec9b95 + 79b2efc commit b97b654

3 files changed

Lines changed: 113 additions & 151 deletions

File tree

Controllers/VisitController.cs

Lines changed: 90 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public VisitDTO ConvertItemToDto(Community_Visit item)
2828
dto.id = item.id;
2929
dto.date = item.date;
3030
dto.visitor_id = item.visitor_id;
31-
dto.tab_id = item.tab_id;
31+
dto.tab_id = item.tab_id;
3232
dto.country = item.country;
3333
dto.region = item.region;
3434
dto.city = item.city;
@@ -68,7 +68,7 @@ public Community_Visit ConvertDtoToItem(Community_Visit item, VisitDTO dto)
6868
item.id = dto.id;
6969
item.date = dto.date;
7070
item.visitor_id = dto.visitor_id;
71-
item.tab_id = dto.tab_id;
71+
item.tab_id = dto.tab_id;
7272
item.country = dto.country;
7373
item.region = dto.region;
7474
item.city = dto.city;
@@ -142,6 +142,8 @@ public HttpResponseMessage Get(int id)
142142
}
143143
}
144144

145+
146+
// used for the top graph
145147
[HttpGet]
146148
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)]
147149
public HttpResponseMessage Get(int portal_id, Nullable<DateTime> period_start, Nullable<DateTime> period_end)
@@ -184,6 +186,7 @@ public HttpResponseMessage Get(int portal_id, Nullable<DateTime> period_start, N
184186
}
185187
}
186188

189+
// used for the bottom detail graph
187190
[HttpGet]
188191
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)]
189192
public HttpResponseMessage Get(string field, int portal_id, Nullable<DateTime> period_start, Nullable<DateTime> period_end, int rows)
@@ -249,7 +252,7 @@ public HttpResponseMessage Get(string field, int portal_id, Nullable<DateTime> p
249252
case "url":
250253
grouped = list.GroupBy(i => i.url);
251254
break;
252-
255+
253256
case "country":
254257
grouped = list.GroupBy(i => i.country);
255258
break;
@@ -403,50 +406,6 @@ public VisitDTO SaveVisit(VisitDTO dto)
403406
return ConvertItemToDto(visit);
404407
}
405408

406-
//[NonAction]
407-
//public void WriteVisits()
408-
//{
409-
// List<VisitDTO> visit_dtos = new List<VisitDTO>();
410-
411-
// // dictionary to store visitors to update
412-
// Dictionary<int, Nullable<int>> dicVisitors = new Dictionary<int, Nullable<int>>();
413-
414-
// // get all visitor objects from Cache
415-
// dynamic CacheItems = HttpRuntime.Cache.Cast<DictionaryEntry>().Select(entry => (string)entry.Key).Where(key => key.StartsWith("DNNVISITOR")).ToArray();
416-
417-
// // iterate through visit items
418-
// foreach (string Key in CacheItems)
419-
// {
420-
// // get visitor object
421-
// VisitDTO visit_dto = (VisitDTO)HttpRuntime.Cache.Get(Key);
422-
423-
// // populate visit fields
424-
// visit_dto = ProcessVisit(visit_dto);
425-
426-
// Visit visit = ConvertDtoToItem(null, visit_dto);
427-
// dc.Visits.InsertOnSubmit(visit);
428-
// dc.SubmitChanges();
429-
430-
// //// save visitor
431-
// //if (!dicVisitors.ContainsKey(visit_dto.visitor_id))
432-
// //{
433-
// // dicVisitors.Add(visit_dto.visitor_id, visit_dto..user_id);
434-
// //}
435-
// //else
436-
// //{
437-
// // dicVisitors[visit_dto.visitor_id] = visit_dto.user_id;
438-
// //}
439-
440-
// HttpRuntime.Cache.Remove(Key);
441-
// }
442-
443-
// //// iterate through all visitors that need to be updated
444-
// //foreach (KeyValuePair<int, Nullable<int>> kvp in dicVisitors)
445-
// //{
446-
// // visitorController.UpdateVisitor(kvp.Key, kvp.Value);
447-
// //}
448-
//}
449-
450409
[NonAction]
451410
public VisitDTO ProcessVisit(VisitDTO visit)
452411
{
@@ -559,8 +518,10 @@ public void PurgeVisits()
559518
}
560519

561520
[NonAction]
562-
public List<DateCountDTO> GetViews(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
521+
public List<int> GetViews(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
563522
{
523+
var views = new List<int>();
524+
564525
var query = dc.Community_Visits.Where(i => i.Tab.PortalID == portal_id);
565526

566527
if (start_date.HasValue)
@@ -573,9 +534,7 @@ public List<DateCountDTO> GetViews(int portal_id, Nullable<DateTime> start_date,
573534
query = query.Where(i => i.date.Date <= end_date.GetValueOrDefault().Date);
574535
}
575536

576-
var list = query.ToList();
577-
578-
var results = list
537+
var results = query
579538
.GroupBy(i => i.date.Date)
580539
.Select(i => new DateCountDTO()
581540
{
@@ -585,12 +544,30 @@ public List<DateCountDTO> GetViews(int portal_id, Nullable<DateTime> start_date,
585544
.OrderBy(i => i.date)
586545
.ToList();
587546

588-
return results;
547+
var date = start_date.GetValueOrDefault().Date;
548+
var end = end_date.GetValueOrDefault().Date;
549+
while (date <= end)
550+
{
551+
var result = results.Where(i => i.date.Date == date.Date).SingleOrDefault();
552+
if (result != null)
553+
{
554+
views.Add(result.count);
555+
}
556+
else
557+
{
558+
views.Add(0);
559+
}
560+
date = date.AddDays(1);
561+
}
562+
563+
return views;
589564
}
590565

591566
[NonAction]
592-
public List<DateCountDTO> GetVisits(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
567+
public List<int> GetVisits(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
593568
{
569+
var visits = new List<int>();
570+
594571
var query = dc.Community_Visits.Where(i => i.Tab.PortalID == portal_id);
595572

596573
if (start_date.HasValue)
@@ -603,9 +580,7 @@ public List<DateCountDTO> GetVisits(int portal_id, Nullable<DateTime> start_date
603580
query = query.Where(i => i.date.Date <= end_date.GetValueOrDefault().Date);
604581
}
605582

606-
var list = query.ToList();
607-
608-
var results = list
583+
var results = query
609584
.GroupBy(i => i.date.Date)
610585
.Select(i => new DateCountDTO()
611586
{
@@ -615,12 +590,30 @@ public List<DateCountDTO> GetVisits(int portal_id, Nullable<DateTime> start_date
615590
.OrderBy(i => i.date)
616591
.ToList();
617592

618-
return results;
593+
var date = start_date.GetValueOrDefault().Date;
594+
var end = end_date.GetValueOrDefault().Date;
595+
while (date <= end)
596+
{
597+
var result = results.Where(i => i.date.Date == date.Date).SingleOrDefault();
598+
if (result != null)
599+
{
600+
visits.Add(result.count);
601+
}
602+
else
603+
{
604+
visits.Add(0);
605+
}
606+
date = date.AddDays(1);
607+
}
608+
609+
return visits;
619610
}
620611

621612
[NonAction]
622-
public List<DateCountDTO> GetVisitors(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
613+
public List<int> GetVisitors(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
623614
{
615+
var visitors = new List<int>();
616+
624617
var query = dc.Community_Visits.Where(i => i.Tab.PortalID == portal_id);
625618

626619
if (start_date.HasValue)
@@ -633,9 +626,7 @@ public List<DateCountDTO> GetVisitors(int portal_id, Nullable<DateTime> start_da
633626
query = query.Where(i => i.date.Date <= end_date.GetValueOrDefault().Date);
634627
}
635628

636-
var list = query.ToList();
637-
638-
var results = list
629+
var results = query
639630
.GroupBy(i => i.date.Date)
640631
.Select(i => new DateCountDTO()
641632
{
@@ -645,12 +636,30 @@ public List<DateCountDTO> GetVisitors(int portal_id, Nullable<DateTime> start_da
645636
.OrderBy(i => i.date)
646637
.ToList();
647638

648-
return results;
639+
var date = start_date.GetValueOrDefault().Date;
640+
var end = end_date.GetValueOrDefault().Date;
641+
while (date <= end)
642+
{
643+
var result = results.Where(i => i.date.Date == date.Date).SingleOrDefault();
644+
if (result != null)
645+
{
646+
visitors.Add(result.count);
647+
}
648+
else
649+
{
650+
visitors.Add(0);
651+
}
652+
date = date.AddDays(1);
653+
}
654+
655+
return visitors;
649656
}
650657

651658
[NonAction]
652-
public List<DateCountDTO> GetUsers(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
659+
public List<int> GetUsers(int portal_id, Nullable<DateTime> start_date, Nullable<DateTime> end_date)
653660
{
661+
var users = new List<int>();
662+
654663
var query = dc.Community_Visits.Where(i => i.Tab.PortalID == portal_id);
655664

656665
if (start_date.HasValue)
@@ -663,9 +672,7 @@ public List<DateCountDTO> GetUsers(int portal_id, Nullable<DateTime> start_date,
663672
query = query.Where(i => i.date.Date <= end_date.GetValueOrDefault().Date);
664673
}
665674

666-
var list = query.ToList();
667-
668-
var results = list
675+
var results = query
669676
.GroupBy(i => i.date.Date)
670677
.Select(i => new DateCountDTO()
671678
{
@@ -675,8 +682,23 @@ public List<DateCountDTO> GetUsers(int portal_id, Nullable<DateTime> start_date,
675682
.OrderBy(i => i.date)
676683
.ToList();
677684

678-
return results;
679-
}
685+
var date = start_date.GetValueOrDefault().Date;
686+
var end = end_date.GetValueOrDefault().Date;
687+
while (date <= end)
688+
{
689+
var result = results.Where(i => i.date.Date == date.Date).SingleOrDefault();
690+
if (result != null)
691+
{
692+
users.Add(result.count);
693+
}
694+
else
695+
{
696+
users.Add(0);
697+
}
698+
date = date.AddDays(1);
699+
}
680700

701+
return users;
702+
}
681703
}
682704
}

DTOs/DashboardDTO.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ public DashboardDTO()
1616
public int visitor_count { get; set; }
1717
public int user_count { get; set; }
1818

19-
public List<DateCountDTO> views { get; set; }
20-
public List<DateCountDTO> visits { get; set; }
21-
public List<DateCountDTO> visitors { get; set; }
22-
public List<DateCountDTO> users { get; set; }
19+
public List<int> views { get; set; }
20+
public List<int> visits { get; set; }
21+
public List<int> visitors { get; set; }
22+
public List<int> users { get; set; }
2323

2424
}
2525

0 commit comments

Comments
 (0)