Esempio n. 1
0
        protected DriverResult DetailDisplay(MilestonePart part, dynamic shapeHelper)
        {
            List <DriverResult> shapes = new List <DriverResult>();

            EditMilestoneViewModel model = this.Convert(part);

            shapes.Add(ContentShape("Parts_Milestone_Data", () => shapeHelper.Parts_Milestone_Data(Model: model)));

            var memberShapes = this.GetMilestoneMembers(part.Id, "Pinboard", false).ToList();

            memberShapes.ForEach(c =>
            {
                ContentItem contentItem = c.ContentItem;
                TicketPart ticket       = contentItem.As <TicketPart>();
                c.StatusId = ticket.Record.StatusRecord != null ? (int?)ticket.Record.StatusRecord.Id : null;
            });

            dynamic ticketsModel = new ExpandoObject();

            ticketsModel.Part  = part;
            ticketsModel.Items = memberShapes;

            // we want to represent the tickets in a table where there is a column for each status.
            var statusRecords = this.basicDataService.GetStatusRecords().ToList();

            ticketsModel.StatusRecords = statusRecords;

            shapes.Add(ContentShape("Parts_Milestone_Tickets", () => shapeHelper.Parts_Milestone_Tickets(Model: JsonConvert.SerializeObject(ticketsModel))));

            return(this.Combined(shapes.ToArray()));
        }
Esempio n. 2
0
        protected DriverResult PlannerDisplay(MilestonePart part, dynamic shapeHelper)
        {
            List <DriverResult> shapes = new List <DriverResult>();

            EditMilestoneViewModel model = this.Convert(part);

            shapes.Add(ContentShape("Parts_Milestone_Data", () => shapeHelper.Parts_Milestone_Data(Model: model)));

            var memberShapes = this.GetMilestoneMembers(part.Id, "TableRow", part.Record.IsBacklog).ToList();

            // in the planner, we don't need the child tickets. Only root items or the ones whose
            // parents are not part of the milestone
            memberShapes = memberShapes.Where(c =>
                                              c.ParentId == default(int) ||
                                              (c.ParentId != default(int) && !memberShapes.Any(d => d.ContentItem.Id == c.ParentId))).ToList();

            var attachToProjectPart = part.As <AttachToProjectPart>();

            if (attachToProjectPart == null || attachToProjectPart.Record.Project == null)
            {
                throw new OrchardException(T("Milestone is not attached to a project"));
            }

            int projectId = attachToProjectPart.Record.Project.Id;
            var project   = this.services.ContentManager.Get(projectId);

            if (project == null)
            {
                throw new OrchardException(T("Milestone is not attached to a project"));
            }

            dynamic membersModel = new ExpandoObject();

            membersModel.Part        = part;
            membersModel.CanEdit     = this.contentOwnershipService.CurrentUserCanEditContent(part.ContentItem);
            membersModel.Items       = memberShapes;
            membersModel.ProjectId   = projectId;
            membersModel.MilestoneId = part.Id;
            membersModel.BacklogId   = null;

            if (!part.IsBacklog)
            {
                var backlog = this.milestoneService.GerProjectBacklog(projectId);

                if (backlog == null)
                {
                    throw new OrchardException(T("Project doesn't have any Backlog"));
                }

                var backlogShapes = this.GetMilestoneMembers(backlog.Id, "TableRow", true).ToList();
                membersModel.BacklogMembers = backlogShapes;
                membersModel.BacklogId      = backlog.Id;
            }

            shapes.Add(ContentShape("Parts_Milestone_Planner", () => shapeHelper.Parts_Milestone_Planner(Model: JsonConvert.SerializeObject(membersModel))));

            return(this.Combined(shapes.ToArray()));
        }
Esempio n. 3
0
        protected EditMilestoneViewModel Convert(MilestonePart part)
        {
            EditMilestoneViewModel model = new EditMilestoneViewModel
            {
                IsBacklog = part.Record.IsBacklog,
                Start     = part.Record.StartTime,
                End       = part.Record.EndTime,
                IsClosed  = part.Record.IsClosed,
                IsCurrent = part.Record.IsCurrent
            };

            return(model);
        }
        public virtual ActionResult Create()
        {
            var model = new EditMilestoneViewModel();

            // Get a list of all milestones for the organization
            var user   = _userByIdQuery.WithUserId(CurrentUserId).Execute();
            var msList = _milestoneListQuery.Execute(new ByOrganizationIdParams {
                OrganizationId = user.Organization.Id, RequestingUserId = user.Id
            });

            model.SetAvailableMilestoneList(msList);

            return(View(MVC.Organization.Milestone.Views.Update, model));
        }
Esempio n. 5
0
        protected override DriverResult Editor(MilestonePart part, dynamic shapeHelper)
        {
            if (!this.contentOwnershipService.IsCurrentUserOperator())
            {
                throw new Security.OrchardSecurityException(T("You do not have permission to do this operation"));
            }

            EditMilestoneViewModel model = this.Convert(part);

            return(ContentShape("Parts_Milestone_Edit",
                                () => shapeHelper.EditorTemplate(
                                    TemplateName: "Parts/Milestone",
                                    Model: model,
                                    Prefix: Prefix)));
        }
Esempio n. 6
0
        protected override DriverResult Editor(MilestonePart part, IUpdateModel updater, dynamic shapeHelper)
        {
            if (!this.contentOwnershipService.IsCurrentUserOperator())
            {
                throw new Security.OrchardSecurityException(T("You do not have permission to do this operation"));
            }

            EditMilestoneViewModel model = new EditMilestoneViewModel();

            updater.TryUpdateModel(model, Prefix, null, null);

            part.Record.IsCurrent = model.IsCurrent;
            part.Record.IsClosed  = model.IsClosed;
            part.Record.StartTime = model.Start;
            part.Record.EndTime   = model.End;

            return(null);
        }
Esempio n. 7
0
 protected override DriverResult Display(MilestonePart part, string displayType, dynamic shapeHelper)
 {
     if (displayType == "Detail")
     {
         return(this.DetailDisplay(part, shapeHelper));
     }
     else if (displayType == "Planner")
     {
         return(this.PlannerDisplay(part, shapeHelper));
     }
     else if (displayType == "GanttChart")
     {
         return(this.GanttChartDisplay(part, shapeHelper));
     }
     else
     {
         EditMilestoneViewModel model = this.Convert(part);
         return(this.ContentShape("Parts_Milestone_Data", () => shapeHelper.Parts_Milestone_Data(Model: model)));
     }
 }
        public virtual ActionResult Update(EditMilestoneViewModel model)
        {
            var user = _userByIdQuery.WithUserId(CurrentUserId).Execute();

            if (ModelState.IsValid)
            {
                var saveParams = Mapper.Map <EditMilestoneViewModel, SaveMilestoneParams>(model);
                saveParams.RequestingUserId = CurrentUserId;
                saveParams.OrganizationId   = user.Organization.Id;
                var result = _saveMilestoneProcess.Execute(saveParams);

                return(RedirectToAction(MVC.Organization.Milestone.Details(result.Id)));
            }

            // Not valid
            var msList = _milestoneListQuery.Execute(new ByOrganizationIdParams {
                OrganizationId = user.Organization.Id, RequestingUserId = user.Id
            });

            model.SetAvailableMilestoneList(msList);
            return(View(model));
        }
Esempio n. 9
0
        protected DriverResult GanttChartDisplay(MilestonePart part, dynamic shapeHelper)
        {
            List <DriverResult> shapes = new List <DriverResult>();

            EditMilestoneViewModel model = this.Convert(part);

            shapes.Add(ContentShape("Parts_Milestone_Data", () => shapeHelper.Parts_Milestone_Data(Model: model)));

            var memberShapes = this.GetMilestoneMembers(part.Id, "GanttChart", false).ToList();

            memberShapes.ForEach(c =>
            {
                ContentItem contentItem = c.ContentItem;
                TicketPart ticket       = contentItem.As <TicketPart>();
                c.StatusId = ticket.Record.StatusRecord != null ? (int?)ticket.Record.StatusRecord.Id : null;
            });

            dynamic ticketsModel = new ExpandoObject();

            ticketsModel.Milestone = model;

            List <dynamic> months = new List <dynamic>();

            List <DateTime> daysInDateTime = new List <DateTime>();

            // List of days in milestone
            if (model.Start.HasValue && model.End.HasValue && model.Start.Value < model.End.Value)
            {
                for (var day = model.Start.Value.Date; day <= model.End.Value.Date; day = day.AddDays(1))
                {
                    daysInDateTime.Add(CRMHelper.SetSiteTimeZone(this.services.WorkContext, day));
                }
            }

            var monthNames = new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };

            var monthsInDayTime = daysInDateTime.GroupBy(c => new { c.Year, c.Month });

            foreach (var item in monthsInDayTime)
            {
                List <string> days  = new List <string>();
                dynamic       month = new ExpandoObject();
                month.Month = item.Key.Month;
                month.Year  = item.Key.Year;
                month.Name  = T(monthNames[item.Key.Month - 1]).Text;
                months.Add(month);

                foreach (var day in item)
                {
                    daysInDateTime.Add(day);
                    days.Add(day.ToString("yyyy-MM-dd"));
                }

                month.Days = days;
            }

            ticketsModel.Months = months;
            ticketsModel.Items  = memberShapes;
            ticketsModel.Today  = CRMHelper.SetSiteTimeZone(this.services.WorkContext, DateTime.UtcNow).ToString("yyyy-MM-dd");

            // we want to represent the tickets in a table where there is a column for each status.
            var statusRecords = this.basicDataService.GetStatusRecords().ToList();

            statusRecords.Insert(0, new StatusRecord {
                Id = 0, OrderId = 0, Name = T("No Status").Text
            });
            ticketsModel.StatusRecords = statusRecords;

            shapes.Add(ContentShape("Parts_Milestone_GanttChart", () => shapeHelper.Parts_Milestone_GanttChart(Model: JsonConvert.SerializeObject(ticketsModel))));

            return(this.Combined(shapes.ToArray()));
        }