private static CodingViewModel ToCodingViewModel(this Coding coding)
        {
            var viewModel = new CodingViewModel
            {
                Code    = coding.Code,
                Display = coding.Display,
                System  = coding.System
            };

            return(viewModel);
        }
Exemple #2
0
        /// <summary>
        /// Pagina de concurs a unei probleme. Aici se rezolva problema si se trimite solutia
        /// </summary>
        /// <param name="id">id-ul problemei</param>
        /// <param name="grade">nota obtinuta in urma trimiterii unei solutii</param>
        /// <param name="hasGrade">parametru de verificare in View daca a fost verificata solutia si a primit nota</param>
        public async Task <IActionResult> Index(int?id, float grade, bool hasGrade)
        {
            if (id == null)
            {
                return(NotFound());
            }
            // challenge-ul in curs de desfasurare
            var challenge = _context.Challenges
                            .Include(s => s.Contest)
                            .FirstOrDefault(m => m.Id == id);

            if (!IsChallengeActive(challenge))
            {
                return(RedirectToAction("EroareTimp"));
            }
            //inserare template-uri aferente challenge-ului in limbaje
            var programmingLanguages = _context.ProgrammingLanguages.Where(s => s.Available).ToList();
            var codeTemplates        = _context.CodeTemplates.Where(s => s.ChallengeId == id);

            foreach (var codeTemplate in codeTemplates)
            {
                foreach (var language in programmingLanguages)
                {
                    if (codeTemplate.ProgrammingLanguageId == language.Id)
                    {
                        language.CodeTemplate = codeTemplate.Code;
                    }
                }
            }
            //formare sesiune de coding
            var userId        = _userManager.GetUserId(User); // id-ul utilizatorului curent
            var codingSession = _context.CodingSessions       // verificam sa vedem daca este salvata o sesiune deja
                                .Include(s => s.ProgrammingLanguage)
                                .FirstOrDefault(s => s.ChallengeId == id && s.ApplicationUserId == userId);

            if (codingSession == null)      // daca nu este una salvata in baza de date cream una aferenta utilizatorului si challenge-ului
            {
                var progLang         = programmingLanguages.First();
                var newCodingSession = new CodingSessionModel
                {
                    ChallengeId           = challenge.Id,
                    ApplicationUserId     = userId,
                    ProgrammingLanguageId = progLang.Id,
                    Code = progLang.CodeTemplate,
                };
                _context.CodingSessions.Add(newCodingSession);
                await _context.SaveChangesAsync();

                codingSession = newCodingSession;
            }
            // creare condingView pentru afisare in view
            var codingViewModel = new CodingViewModel
            {
                Challenge           = challenge,
                CodingSession       = codingSession,
                HasGrade            = hasGrade,
                Grade               = grade,
                ProgramingLanguages = programmingLanguages
            };
            // creare select list pentru selectare limbaj de programare
            var currentLangCode = codingSession.ProgrammingLanguage.LanguageCode;
            var programmingLanguagesSelectList = new SelectList(programmingLanguages, "LanguageCode", "Name", currentLangCode);

            ViewData["ProgrammingLanguages"] = programmingLanguagesSelectList;
            //calculare timp ramas din concurs
            var contest       = challenge.Contest;
            var remainingTime = contest.Duration - (DateTime.Now - contest.StartDate).TotalMinutes;

            ViewData["remainingTime"] = Math.Round(remainingTime);
            return(View(codingViewModel));
        }
Exemple #3
0
 private void CodingClicked(object sender, RoutedEventArgs e)
 {
     DataContext = new CodingViewModel();
 }
Exemple #4
0
 public MainWindow()
 {
     InitializeComponent();
     DataContext = new CodingViewModel();
 }