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(); }
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); }