June 1, 2020

Daily log #18

Привет ребят, стараюсь потихоньку вернуться в режим! Причину отсутствия постов я описал постом выше, а сейчас давайте перейдем непосредственно к логу :D

Программирование

Я написал второй сайт( в стол конечно же ), а именно форум. Особых проблем не возникло, но появилась вещь над которой нужно было задуматься. Так как это форум, то помимо вопросов здесь есть еще и ответы, которые должны быть привязаны к определенным вопросам. В модели это делается через Foreign Key( ссылочный ключ ).

То есть ключом модели вопроса является Id, значит ссылочный ключ модели ответа должен ссылаться на этот Id. Ошибка у меня возникла при добавлении нового вопроса, суть ее заключалась в том, что ссылочные ключи не могут установиться автоматически( например как Id ), их нужно прописывать ( например как текст или заголовок ).

Так как задавать Id вопроса которому дается ответ со стороны клиента( например в форме ) было бы глупо, я начал пробовать задавать его не посредственно в функции контроллера. В итоге пришел к следующему варианту:

        [HttpPost]
        public async Task<IActionResult> Ask(Answer answer, int? id)
        {
            Ask ask = await adb.asks.FirstOrDefaultAsync(p => p.AskId == id);
            answer.AskId = ask.AskId;
            adb.answers.Add(answer);
            await adb.SaveChangesAsync();
            return RedirectToAction("Index");
        }
        
        public async Task<IActionResult> Ask(int? id)
        {
            if (id != null)
            {
                IQueryable<Answer> answers = adb.answers.OrderByDescending(p => p.AnswerId);
                
                var text = answers.Where(p => p.AskId == id).ToList();
               
                Ask ask = await adb.asks.FirstOrDefaultAsync(p => p.AskId == id);
                if (ask != null)
                {
                    AskViewModel viewModel = new AskViewModel
                    {
                        ask = ask,
                        getAllAnswers = text
                    };
                    return View(viewModel);
                }
                    
            }
            return NotFound();
        }

Первая функция добавляет ответ в базу данных, ссылаясь на id вопроса, который сейчас открыт в отдельной ссылке. А вторая функция просто выбирает определенный вопрос из базы данных по id. Выбирает нужные ответы с ссылочным ключом равным id вопроса. Все это передает во ViewModel и в последствии выводит во View.

Возможно кому-то это было полезно, а сейчас хочу сказать пару слов о планах на ближайшие 1-2 недели. Я хочу сверстать несколько шаблонов для того чтобы подтянуть html, bootstrap и css. Скорее всего несколько шаблонов я реализую и добавлю функционал.

P.s. если у вас какие-нибудь шаблоны по которым можно верстать киньте в лс <3

Телеграм

Завтра беру интервью у нового гостя, можете попробовать догадаться какой его основой ЯП.

Вообще сейчас думаю над новым контентом, так как хочу время от времени разбавлять массу логов и интервью. Пока что есть только одна идея, но ее сложно реализовать в статье поэтому нужно подкорректировать реализацию.

P.s. если у вас есть какие-то пожелания можете писать мне в лс. Всегда рад слышать свежие идеи и конструктивную критику

Школа

Вообщем, со школой все покончено я уже видел свой аттестат и выглядит даже хорошо если учитывать что первые два триместра я почти забил на учебу. Вышли все четверки и четыре пятерки. Учебники я сдал, осталось только получить эту подставку пот чай и подать документы.

Портфолио я оформил, так что дальше от меня особо ничего не зависит.

Ну а на сегодня все, скоро вернусь в режим и будет лучше чем раньше!!!

Удачи, программисты