public async Task <string> UpdateContent(UpdateContentViewModel model)
        {
            var content = await _context.Set <Content>()
                          .Include(x => x.ContentVersions)
                          .FirstOrDefaultAsync(x => x.Id == model.ContentId);

            content.AddContentVersion(model.TextContent);

            var result = _context.Update(content);
            await _context.SaveChangesAsync();

            return(result.Id);
        }
        public async Task <Announcement> Add(Announcement announcement)
        {
            announcement.Id = Guid.NewGuid();
            _databaseContext.Announcements.Add(announcement);
            try
            {
                await _databaseContext.SaveChangesAsync();
            }
            catch (Exception exp)
            {
                _logger.LogError($"Error in {nameof(Add)}: " + exp.Message);
            }

            return(announcement);
        }
        private async Task <int> Delete <TEntity>(string id) where TEntity : EntityBase
        {
            var entity = await _context.Set <TEntity>().FirstOrDefaultAsync(x => x.Id == id);

            if (entity == null)
            {
                return(0);
            }

            _context.Remove(entity);
            return(await _context.SaveChangesAsync());
        }
Beispiel #4
0
        public async Task <Candidate> AddAsync(Candidate candidate)
        {
            _databaseContext.Candidates.Add(candidate);
            try
            {
                await _databaseContext.SaveChangesAsync();
            }
            catch (Exception exp)
            {
                _logger.LogError($"Error in {nameof(AddAsync)}: " + exp.Message);
            }

            return(candidate);
        }
        public async Task <string> CreateComment(CreateCommentViewModel model)
        {
            var comment = new Comment(model.FeedItemId, model.Text, model.FullName);

            _context.Add(comment);

            await _context.SaveChangesAsync();

            return(comment.Id);
        }
Beispiel #6
0
        public async Task <Boolean> GenerateRepartition(RepartitionConfiguration configuration)
        {
            //Get Capacity
            try
            {
                int capacity = 0;
                foreach (var classroom in configuration.AvailableClassrooms)
                {
                    capacity = capacity + classroom.Capacity;
                }


                if (_candidateRepository.GetApprovedCandidatesNumber() > capacity)
                {
                    return(false);
                }

                var approvedCandidates = await _candidateRepository.GetApprovedCandidates();

                List <Candidate> sortedCandidatesList =
                    approvedCandidates.OrderBy(c => c.LastName).ThenBy(c => c.FirstName).ToList();

                List <Classroom> sortedClassroomslist =
                    configuration.AvailableClassrooms.OrderBy(c => c.Capacity).ToList();

                var infoSubjectClassRoom = sortedClassroomslist[0];
                sortedClassroomslist.Remove(infoSubjectClassRoom);
                var mateSubjectClassRoom = sortedClassroomslist[0];
                sortedClassroomslist.Remove(mateSubjectClassRoom);
                _databaseContext.Repartitions.RemoveRange(await _databaseContext.Repartitions.ToListAsync());
                _databaseContext.Classrooms.RemoveRange(await _databaseContext.Classrooms.ToListAsync());
                await _databaseContext.SaveChangesAsync();

                foreach (var candidate in sortedCandidatesList)
                {
                    if (mateSubjectClassRoom.Capacity == 0)
                    {
                        if (sortedClassroomslist.Count != 0)
                        {
                            mateSubjectClassRoom = sortedClassroomslist[0];
                            sortedClassroomslist.Remove(mateSubjectClassRoom);
                        }
                        else
                        {
                            mateSubjectClassRoom = infoSubjectClassRoom;
                        }
                    }

                    if (infoSubjectClassRoom.Capacity == 0)
                    {
                        if (sortedClassroomslist.Count != 0)
                        {
                            infoSubjectClassRoom = sortedClassroomslist[0];
                            sortedClassroomslist.Remove(infoSubjectClassRoom);
                        }
                        else
                        {
                            infoSubjectClassRoom = mateSubjectClassRoom;
                        }
                    }

                    if (candidate.Subject.Equals("Mathematics"))
                    {
                        var repartition = new Repartition
                        {
                            ApprovedCandidateEmail = candidate.Email,
                            ExamTime   = configuration.ExamTime,
                            RClassroom = mateSubjectClassRoom
                        };
                        _databaseContext.Repartitions.Add(repartition);
                        mateSubjectClassRoom.Capacity--;
                    }
                    if (candidate.Subject.Equals("Informatics (Pascal)") ||
                        candidate.Subject.Equals("Informatics (C/C++)"))
                    {
                        var repartition = new Repartition
                        {
                            ApprovedCandidateEmail = candidate.Email,
                            ExamTime   = configuration.ExamTime,
                            RClassroom = infoSubjectClassRoom
                        };
                        _databaseContext.Repartitions.Add(repartition);
                        infoSubjectClassRoom.Capacity--;
                    }
                }
                // de continuat algorimul (ai toate datele necesare acum)
                await _databaseContext.SaveChangesAsync();
            }catch (Exception exp)
            {
                _logger.LogError($"Error in {nameof(GenerateRepartition)}: " + exp.Message);
                return(false);
            }

            return(true);
        }