Опис АРІ - ojdmytruk/lab_pis_vozniuk_dmytruk GitHub Wiki

Controllers

HomeController.cs

Повертає представлення головної сторінки:

   `public ActionResult Index()
    {
        ViewBag.Title = "Index";

        return View();
    }`

Повертає представлення сторінки, що посилається на зовнішній ресурс:

    `public ActionResult YouTube()
    {
        List<string> videos = new List<string>();
        new YouTube().Run(videos).Wait();
        ViewBag.Title = "YouTube";

        return View();
    }`

ValuesController.cs

Повертає перелік студентів з бази:

   `public IEnumerable<Student> GetStudents()
    {
        return db.Students;
    }`

Повертає інформацію про студента за id:

   `public Student GetStudent(int id)
    {
        Student student = db.Students.Find(id);
        return student;
    }`

Отримує на вхід інформацію з форми для додавання студента (що міститься в представленні).

Додає до бази студента та зберігає зміни в базі:

   `[HttpPost]
    public void CreateStudent([FromBody]Student student)
    {
        db.Students.Add(student);
        db.SaveChanges();
    }`

Отримує id та інформацію з форми (що міститься у представленні).

Оновлює інформацію для студента, чий id співпадає з обраним користувачем, присвоюючи сутності статусу оновленої.

Зберігає зміни в базі:

    ` [HttpPut]
    public void EditStudent(int id, [FromBody]Student student)
    {
        if (id == student.Id)
        {
            db.Entry(student).State = EntityState.Modified;

            db.SaveChanges();
        }
    }`

Виконує в базі пошук обранного користувачем для видалення студента. Якщо такий студент присутній в базі, видаляє його та зберігає зміни в базі:

  ` public void DeleteStudent(int id)
    {
        Student student = db.Students.Find(id);
        if (student != null)
        {
            db.Students.Remove(student);
            db.SaveChanges();
        }
    }`

Виконує метод Dispose класу DbContext:

   `protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            db.Dispose();
        }
        base.Dispose(disposing);
    }`

Models

Student.cs

Отримання та встановлення id студента: public int Id { get; set; } Отримання та встановлення імені студента: public string Name { get; set; } Отримання та встановлення року народження студента: public int BirthYear { get; set; } Отримання та встановлення факультету студента: public string Faculty { get; set; } Отримання та встановлення гуртожитку студента: public int Dormitory { get; set; } Отримання та встановлення кімнати студента: public int Room { get; set; }

StudentContext.cs

Оголошення датасету студентів з методами для отримання та встановлення інформації:

public DbSet Students { get; set; }

StudentDBInitializer.cs

Перевантаження методу Seed(). Отримує базу, до якої буде додаватись інформація.

Додає нові об`єкти студентів до бази:

   `protected override void Seed(StudentContext db)
    {
        db.Students.Add(new Student { Name = "Иван Иванов", Faculty="FICT", Dormitory = 8, Room = 111, BirthYear = 1999 });
        db.Students.Add(new Student { Name = "Петр Петров", Faculty = "FICT", Dormitory = 3, Room = 222, BirthYear = 1998 });
        db.Students.Add(new Student { Name = "Василий Васильев", Faculty = "FICT", Dormitory = 20, Room = 333, BirthYear = 1997 });

        base.Seed(db);
    }`

YouTube.cs

Виконує пошук відео за ключовим словом "общежитие" та повертає список з посиланнями:

   `public async Task Run(List<string> videos)
    {
        var youtubeService = new YouTubeService(new BaseClientService.Initializer()
        {
            ApiKey = "REPLACE_ME",
            ApplicationName = this.GetType().ToString()
        });

        var searchListRequest = youtubeService.Search.List("snippet");
        searchListRequest.Q = "общежитие"; 
        searchListRequest.MaxResults = 50;

        var searchListResponse = await searchListRequest.ExecuteAsync();
        
        foreach (var searchResult in searchListResponse.Items)
        {
            switch (searchResult.Id.Kind)
            {
                case "youtube#video":
                    videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));
                    break;
            }
        }
    }`

Index.cshtml

Відповідає за виведення всіх студентів з бази на екран:

       `function GetAllStudents() {

        $("#createBlock").css('display', 'block');
        $("#editBlock").css('display', 'none');
        $.ajax({
            url: '/api/values',
            type: 'GET',
            dataType: 'json',
            success: function (data) {
                WriteResponse(data);
            },
            error: function (x, y, z) {
                alert(x + '\n' + y + '\n' + z);
            }
        });
    }`

"Витягує" з форми введенні користувачем атрибути студента, створює сутність студента та заносить цю інформацію до JSON файлу:

      ` function AddStudent() {
        var student = {
            Name: $('#addName').val(),
            Faculty: $('#addFaculty').val(),
            BirthYear: $('#addBirthYear').val(),
            Dormitory: $('#addDormitory').val(),
            Room: $('#addRoom').val()
        };

        $.ajax({
            url: '/api/values/',
            type: 'POST',
            data: JSON.stringify(student),
            contentType: "application/json;charset=utf-8",
            success: function (data) {
                GetAllStudents();
            },
            error: function (x, y, z) {
                alert(x + '\n' + y + '\n' + z);
            }
        });
    }`

Видаляє студента за id:

        `function DeleteStudent(id) {

        $.ajax({
            url: '/api/values/' + id,
            type: 'DELETE',
            contentType: "application/json;charset=utf-8",
            success: function (data) {
                GetAllStudents();
            },
            error: function (x, y, z) {
                alert(x + '\n' + y + '\n' + z);
            }
        });
    }`

"Витягує" з форми введенні користувачем атрибути студента, створює сутність студента та вносить корективи в інформацію до JSON файлу:

       `function EditStudent() {
        var id = $('#editId').val()
        var student = {
            Id: $('#editId').val(),
            Name: $('#editName').val(),
            Faculty: $('#editFaculty').val(),
            BirthYear: $('#editBirthYear').val(),
            Dormitory: $('#editDormitory').val(),
            Room: $('#editRoom').val()
        };
        $.ajax({
            url: '/api/values/' + id,
            type: 'PUT',
            data: JSON.stringify(student),
            contentType: "application/json;charset=utf-8",
            success: function (data) {
                GetAllStudents();
            },
            error: function (x, y, z) {
                alert(x + '\n' + y + '\n' + z);
            }
        });
    }`

Виводить на екран таблицю з інформацією про студентів:

       `function WriteResponse(students) {
        var strResult = "<table><th>ID</th><th>Ім`я</th><th>Факультет</th><th>Рік народження</th><th>Гуртожиток</th><th>Кімната</th>";
        $.each(students, function (index, student) {
            strResult += "<tr><td>" + student.Id + "</td><td> " + student.Name + "</td><td>" +
                student.Faculty + "</td><td>" + student.BirthYear + "</td><td>" + student.Dormitory + "</td><td>" + student.Room +
                "</td><td><a id='editItem' data-item='" + student.Id + "' onclick='EditItem(this);' >Редагувати</a></td>" +
                "<td><a id='delItem' data-item='" + student.Id + "' onclick='DeleteItem(this);' >Видалити</a></td></tr>";
        });
        strResult += "</table>";
        $("#tableBlock").html(strResult);

    }`

Виконує видалення студента за id:

   `function DeleteItem(el) {
        var id = $(el).attr('data-item');
        DeleteStudent(id);
    }`

Виконує пошук студента для редагування інформації за id:

    `function EditItem(el) {
        var id = $(el).attr('data-item');
        GetStudent(id);
    }`

Повертає відображення студента:

        `function ShowStudent(student) {
        if (student != null) {
            $("#createBlock").css('display', 'none');
            $("#editBlock").css('display', 'block');
            $("#editId").val(student.Id);
            $("#editName").val(student.Name);
            $("#editFaculty").val(student.Faculty);
            $("#editBirthYear").val(student.BirthYear);
            $("#editDormitory").val(student.Dormitory);
            $("#editRoom").val(student.Room);
        }
        else {
            alert("Такого студента не существует");
        }
    }`

Виконує пошук студента за id:

       `function GetStudent(id) {
        $.ajax({
            url: '/api/values/' + id,
            type: 'GET',
            dataType: 'json',
            success: function (data) {
                ShowStudent(data);
            },
            error: function (x, y, z) {
                alert(x + '\n' + y + '\n' + z);
            }
        });
    }`
⚠️ **GitHub.com Fallback** ⚠️