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 bool AddProject([FromBody] ProjectViewModel viewModel)
        {
            using var transaction = _dbContext.Database.BeginTransaction();
            try
            {
                var project       = new Project(viewModel.Name, viewModel.StatusId);
                var projectEntity = _dbContext.Set <Project>().Add(project);
                _dbContext.SaveChanges();
                var projectId = projectEntity.Entity.Id;
                var periods   = viewModel.Periods;
                foreach (var period in periods)
                {
                    var periodId = GetPeriodForViewModel(period).Id;
                    var projectPeriodCapacity      = period.Capacity == -1 ? 0 : period.Capacity;
                    var functioningCapacityProject =
                        new FunctioningCapacityProject(projectId, periodId, projectPeriodCapacity);
                    var functioningCapacityResources = new List <FunctioningCapacityResource>();
                    foreach (var resourceCapacityViewModel in period.Resources)
                    {
                        if (resourceCapacityViewModel.Capacity == -1)
                        {
                            resourceCapacityViewModel.Capacity = 0;
                        }
                        var fres = new FunctioningCapacityResource(projectId,
                                                                   resourceCapacityViewModel.Id,
                                                                   resourceCapacityViewModel.Capacity,
                                                                   periodId);
                        functioningCapacityResources.Add(fres);
                    }

                    if (functioningCapacityResources.Count == 0)
                    {
                        if (functioningCapacityProject.FunctioningCapacity == 0)
                        {
                            continue;
                        }
                        _dbContext.Set <FunctioningCapacityProject>().Add(functioningCapacityProject);
                    }
                    else
                    {
                        _dbContext.Set <FunctioningCapacityResource>().AddRange(functioningCapacityResources);
                        _dbContext.Set <FunctioningCapacityProject>().Add(functioningCapacityProject);
                    }
                }

                _dbContext.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                transaction.Rollback();
                transaction.Dispose();
                return(false);
            }

            transaction.Commit();
            transaction.Dispose();
            return(true);
        }