public dynamic CreateModel(ActivityStreamRecord item)
        {
            var session = this.transactionManager.GetSession();

            session.Evict(item);
            item.CreationDateTime = CRMHelper.SetSiteTimeZone(this.services.WorkContext, item.CreationDateTime);

            dynamic itemModel   = new ExpandoObject();
            dynamic description = JObject.Parse(item.Description);

            itemModel.Changes = description.Changes != null ?
                                ((JArray)description.Changes).Select(c => c.ToString()).ToList() :
                                new List <string>();
            RouteValueDictionary route = null;

            if (description.Route != null)
            {
                route = new RouteValueDictionary();
                foreach (var routeItem in description.Route)
                {
                    route.Add(routeItem.Name, routeItem.Value.ToString());
                }
            }
            else if (item.RelatedContent != null && description.CreateLinkToTheChange == true)
            {
                route = new RouteValueDictionary();
                route.Add("controller", "Item");
                route.Add("Action", "Display");
                route.Add("id", item.RelatedContent.Id);
                route.Add("area", "Contents");
            }

            itemModel.Route              = route;
            itemModel.Id                 = item.RelatedContent.Id;
            itemModel.ActivityStreamId   = item.Id;
            itemModel.ContentDescription = description.ContentDescription;
            itemModel.DateTime           = item.CreationDateTime;

            if (item.User != null)
            {
                var user = this.basicDataService.GetOperatorOrCustomerUser(item.User.Id);
                itemModel.User         = user;
                itemModel.UserId       = item.User.Id;
                itemModel.UserFullName = user != null?CRMHelper.GetFullNameOfUser(user) : item.User.UserName;
            }
            else
            {
                var user = _memebershipService.GetUser(services.WorkContext.CurrentSite.SuperUser);
                itemModel.User         = user;
                itemModel.UserId       = user.Id;
                itemModel.UserFullName = T("System").Text;
            }

            return(itemModel);
        }
        public dynamic CreateModel(List <ActivityStreamRecord> items, int count, int page, int pageSize)
        {
            var session = this.transactionManager.GetSession();

            // set time zone
            items.ForEach(c =>
            {
                session.Evict(c);
                c.CreationDateTime = CRMHelper.SetSiteTimeZone(this.services.WorkContext, c.CreationDateTime);
            });

            dynamic  model = new ExpandoObject();
            DateTime today = CRMHelper.SetSiteTimeZone(this.services.WorkContext, DateTime.UtcNow);

            // create pager
            var currentSite = this.services.WorkContext.CurrentSite;
            var pager       = new Pager(currentSite, page, pageSize);

            model.Pager = this.services.New.Pager(pager).TotalItemCount(count);

            // contains the list of days, each day will contain the list of items in that day
            List <dynamic> dayModels = new List <dynamic>();

            model.Days = dayModels;
            var groupsByDay = items.GroupBy(c => c.CreationDateTime.Date).OrderByDescending(c => c.Key).ToList();

            foreach (var group in groupsByDay)
            {
                dynamic dayModel = new ExpandoObject();
                dayModels.Add(dayModel);
                dayModel.Date  = group.Key;
                dayModel.Title = group.Key.Date == today.Date ? T("Today").Text : group.Key.ToLongDateString();

                List <dynamic> itemModels = new List <dynamic>();
                dayModel.Items = itemModels;
                foreach (var item in group)
                {
                    dynamic itemModel = this.CreateModel(item);

                    itemModels.Add(itemModel);
                }
            }

            return(model);
        }
Exemplo n.º 3
0
        public static CommentsViewModel.CRMCommentViewModel Convert(IOrchardServices services, CRMCommentPartRecord record, IEnumerable <IUser> users)
        {
            var output = new CommentsViewModel.CRMCommentViewModel
            {
                IsEmail        = record.IsEmail,
                Subject        = record.Subject,
                BCC            = record.BCC,
                CC             = record.CC,
                CommentDateUtc = record.CommentDateUtc,
                CommentText    = record.CommentText,
                IsHtml         = record.IsHtml,
                User           = users.FirstOrDefault(c => c.Id == record.User.Id)
            };

            if (output.CommentDateUtc.HasValue && output.CommentDateUtc.Value.Kind == DateTimeKind.Utc)
            {
                output.CommentDateUtc = CRMHelper.SetSiteTimeZone(services, output.CommentDateUtc.Value);
            }

            return(output);
        }