Esempio n. 1
0
        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);
        }