using System; using System.Collections.Generic; using System.Linq; namespace TicketManager.Models { public class Project : ITask { public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public DateTime CreatedAt { get; } = DateTime.Now; public DateTime PlannedEnding { get; set; } public float Progression { get { return Tickets.Count() == 0 ? 0 : (float)this.Tickets. Where(t => t.Status == Status.Done).Count() / this.Tickets.Count() * 100; } } public Status Status { get; set; } = Status.ToDo; public User Manager { get; set; } public Guid ManagerId { get; set; } private List _assignments; public List Assignments { get { return _assignments ?? new List(); } set { _assignments = value; } } private List _tickets; public List Tickets { get { return _tickets ?? new List(); } set { _tickets = value; } } // private List _edits; // public List Edits // { // get // { return _edits ?? new List(); } // set { _edits = value; } // } private List _files; public List Files { get { return _files ?? new List(); } set { _files = value; } } // Methods public List GetMembers() { return this.Assignments.Select(a => a.User).ToList(); } public void AddMembers(List usersToAdd) { foreach (var user in usersToAdd) { Assignment newAssign = new Assignment() { Project = this, ProjectId = this.Id, User = user, UserId = user.Id }; this.Assignments.Add(newAssign); } } public void RemoveMembers(List membersToRemove) { this.Assignments.RemoveAll(a => membersToRemove.Contains(a.User)); } public int GetMembersCount() => this.GetMembers().Count(); public void GetTicketsCount() => this.Tickets.Count(); public void GetTicketsUpdates() { throw new NotImplementedException("Not Implemented"); } public void Close() { this.Status = Status.Done; } } }