public static TimeSheetProjectModel GenerateModel(DataContract.TimeSheet ts, List <DataContract.Project> parents) { throw new NotImplementedException(); //TimeSheetProjectModel model = new TimeSheetProjectModel(); //model.Projects = parents.Select(k => new Project() //{ // ID = k.ID, // Title = k.Title, // Description = k.Description, //}).ToList(); //foreach (Project project in model.Projects) //{ // var projectTasks = ts.TimeSheetTasks // .Where(k => k.ProjectTask.ProjectId == project.ID) // .ToList(); // if (projectTasks != null) // { // project.SubProjects = projectTasks.Select(k => new SubProject() // { // ID = k.ID, // ProjectId = k.Project.ID, // ParentId = project.ID, // Title = k.Project.Title, // Description = k.Project.Description, // //Activities = k.Activities // }).ToList(); // } //} //return model; }
public static TimeSheetModel GenerateModel(DataContract.TimeSheet ts, List <DataContract.Project> parents) { TimeSheetModel model = new TimeSheetModel() { FromDate = ts.FromDate.ToShortDateString(), ToDate = ts.ToDate.ToShortDateString(), ID = ts.ID, NumberOfDays = (ts.ToDate - ts.FromDate).Days, EmployeeName = "", Title = ts.ToDate.ToString("MMMM yyyy"), Months = MonthsDays(ts.FromDate, ts.ToDate).ToList() }; model.Projects = new List <Project>(); foreach (DataContract.Project parent in parents) { // ##### PROJECT PARSER ##### // Project parsedProject = new Project() { ID = parent.ID, Description = parent.Description, Title = parent.Title }; parsedProject.Activities = new List <Activity>(); List <DataContract.TimeSheetProject> timeSheetProjects = ts.TimeSheetProjects.Where(k => k.Project.ParentId == parent.ID).ToList(); foreach (DataContract.TimeSheetProject tsproject in timeSheetProjects) { // ##### ACTIVITY PARSER ##### // Activity parsedActivity = new Activity() { ID = tsproject.Project.ID, Title = tsproject.Project.Title, Description = tsproject.Project.Description, MonthActivities = new List <ActivityByMonth>() }; List <DataContract.TimeSheetActivity> sheetActivities = tsproject.Activities.Where(k => k.ToDate.HasValue).ToList(); // ##### MONTH ACTIVITIES ##### // // accumulated days DateTime accDate = ts.FromDate; int startMonthDay = accDate.Day; int startMonth = accDate.Month; int startYear = accDate.Year; for (int i = 0; i < model.NumberOfDays + 1; i++) { List <DataContract.TimeSheetActivity> monthActivities = sheetActivities.Where(k => k.FromDate.Day == accDate.Day && k.FromDate.Month == accDate.Month && k.FromDate.Year == accDate.Year) .ToList(); string nbHoursDisplay = ""; double nbHours = monthActivities.Select(k => (k.ToDate.Value - k.FromDate).TotalHours).ToList().Sum(); nbHoursDisplay = nbHours.ToString("0.##"); //if (nbHours < 1) //{ // int nbMins = monthActivities.Select(k => (k.ToDate.Value - k.FromDate).Minutes).ToList().Sum(); // if (nbMins < 1) // { // int nbSec = monthActivities.Select(k => (k.ToDate.Value - k.FromDate).Seconds).ToList().Sum(); // nbHoursDisplay = nbSec == 0 ? "0" : nbSec.ToString() + "s"; // } // else // { // nbHoursDisplay = nbMins.ToString() + "m"; // } //} //else //{ // nbHoursDisplay = nbHours.ToString(); //} // remove from ts activities foreach (var item in monthActivities) { sheetActivities.Remove(item); } ActivityByMonth monthActivity = new ActivityByMonth() { MonthIndex = i, NumberOfHours = nbHoursDisplay }; accDate = accDate.AddDays(1); parsedActivity.MonthActivities.Add(monthActivity); } parsedProject.Activities.Add(parsedActivity); } model.Projects.Add(parsedProject); } return(model); }