Ejemplo n.º 1
0
        private void AddFunctioningCapacityResource(
            ProjectViewModel.ResourceCapacityViewModel resourceCapacityViewModel,
            int periodId,
            int projectId)
        {
            var capacityResources = _dbContext.Set <FunctioningCapacityResource>();
            var resource          = capacityResources.FirstOrDefault(capacityResource =>
                                                                     capacityResource.PeriodId == periodId &&
                                                                     capacityResource.ResourceId == resourceCapacityViewModel.Id &&
                                                                     capacityResource.ProjectId == projectId);

            if (resource == default)
            {
                var newFResource = new FunctioningCapacityResource(projectId, resourceCapacityViewModel.Id,
                                                                   resourceCapacityViewModel.Capacity, periodId);
                capacityResources.Add(newFResource);
            }
            else
            {
                resource.UpdateCapacity(resourceCapacityViewModel.Capacity);
                capacityResources.Update(resource);
            }

            _dbContext.SaveChanges();
        }
Ejemplo n.º 2
0
        public ProjectViewModel GetProjectViewModelById(int id)
        {
            var a = _dbContext.Set <FunctioningCapacityResource>()
                    .Where(resource => resource.ProjectId == id)
                    .Include(resource => resource.Project)
                    .ThenInclude(project => project.ProjectStatus)
                    .Include(resource => resource.Resource)
                    .ThenInclude(resource => resource.Employee)
                    .Include(resource => resource.Period)
                    .OrderBy(resource => resource.Period.Start)
                    .ToList()
                    .GroupBy(resource => resource.Period)
                    .ToDictionary(grouping => grouping.Key, grouping => grouping.ToList());

            var project         = _dbContext.Set <Project>().Find(id);
            var periodsCapacity = _dbContext.Set <FunctioningCapacityProject>()
                                  .Where(capacityProject => capacityProject.ProjectId == id)
                                  .Include(capacityProject => capacityProject.Period)
                                  .ToList();
            var periods2 = periodsCapacity.Select(periodCap =>
            {
                var fresArr = new ProjectViewModel.ResourceCapacityViewModel[0];
                if (a.ContainsKey(periodCap.Period))
                {
                    fresArr = a[periodCap.Period]
                              .Select(functioningCapacityResource =>
                                      new ProjectViewModel.ResourceCapacityViewModel(functioningCapacityResource.Resource.Id,
                                                                                     $"{functioningCapacityResource.Resource.Employee.FirstName} " +
                                                                                     $"{functioningCapacityResource.Resource.Employee.LastName}",
                                                                                     functioningCapacityResource.FunctionCapacity))
                              .ToArray();
                }
                var capacity = periodCap.FunctioningCapacity;
                var period   = new ProjectViewModel.PeriodViewModel(capacity, periodCap.Period.Start, fresArr);
                return(period);
            }).ToArray();
            var projectViewModel = new ProjectViewModel(id, project.Name, project.ProjectStatusId, periods2);

            return(projectViewModel);
        }