payload: {"action":"created","comment":{"url":"https://api.github.com/repos/Dm-R/OOP-task/pulls/comments/318961050","pull_request_review_id":281315718,"id":318961050,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMxODk2MTA1MA==","diff_hunk":"@@ -1,143 +1,352 @@\n-﻿\n-        //Функция для создания объекта - директор\n-        function Boss() {\n-            var remainingProjects = [];//проекты которые не удалось передать в отделы\n+﻿class Company {\n+    constructor() {\n+        this._employedDevs = 0;// принятые программисты\n+        this._dismissedDevs = 0;// уволенные программисты\n+        this._doneProjects = 0;// кол-во выполненых проектов\n+        this._boss = null;// директор\n+        this._departments = [];//отделы\n+    }\n+    checkDevsToDismiss() {// проверяем есть ли программисты, которых можно уволить\n+        this._departments.forEach(function (dep) {\n+            dep.checkDevsToDismiss();\n+        })\n+    }\n+    checkProjects() {// прверяем проекты(готовые выполненые)\n+        this._departments.forEach((dep) => {\n+            dep.checkProjects();\n+        })\n+    }\n+    incDay() {//добавляем день\n+        this._departments.forEach(function (dep) {\n+            dep.incDay();\n+        })\n+    }\n+    addDepartment(dep) {//добавляем отдел\n+        if (dep instanceof Department) {\n+            this._departments.push(dep);\n+            dep.setBoss(this._boss);//устан. директора для отдела\n+            dep.setCompany(this);//устан. компанию для отдела\n+            this._boss[dep.name] = dep;//устан. отдел директору\n+        }\n+    }\n+    setBoss(boss) {//устан. директора для компании\n+        if (boss instanceof Boss) {\n+            this._boss = boss;\n+            this._boss.setCompany(this);\n+        }\n+    }\n+    incEmployedDevs() {// увеличиваем кол-во нанятых программистов\n+        this._employedDevs++;\n+    }\n+    getEmployedDevs() {\n+        return this._employedDevs;\n+    }\n+    incDismissedDevs() {//увеличиваем кол-во уволенных программистов\n+        this._dismissedDevs++;\n+    }\n+    getDismissedDevs() {\n+        return this._dismissedDevs;\n+    }\n+    incDoneProjects(count) {//увеличиваем число выполненых проектов на COUNT штук\n+        this._doneProjects += count;\n+    }\n+    getDoneProjects() {\n+        return this._doneProjects;\n+    }\n+}\n \n-            //как вариант рассматривался такой способ перисвоить проекты разработчикам, но это не совсем\n-            //задача директора и к тому же, данный вариант необходимо допполнять т. к. mobile разработчики\n-            //могут работать совместно.\n-            /*this.distributeByDepartments = function (projects, web, mobile) {\n-                for (var i = 0; i < projects.length; i++) {\n-                    switch (projects[i].type) {\n-                        case 'web': if (web.developers.length > 0) {\n-                            for (var j = 0; dev < web.developers.length; j++) {\n-                                if (web.developers[j].project === null) {\n-                                    web.developers[j].project = projects[i];\n-                                    projects[i].developer = web.developers[j];\n-                                    break;\n-                                }\n-                            }\n-                        }\n-                        case 'mobile': if (mobile.developers.length > 0) {\n-                            for (var m = 0; dev < mobile.developers.length; m++) {\n-                                if (mobile.developers[m].project === null) {\n-                                    mobile.developers[m].project = projects[i];\n-                                    projects[i].developer = mobile.developers[m];\n-                                    break;\n-                                }\n-                            }\n-                        }\n-                    }\n-                }\n-            }*/\n-            // метод для найма новых сотрудников\n-            //Не совсем понятен механизм найма QA специалистов(набирать сразу по кол-ву пректов или создать отдельный метод который будет принимать\n-            //от отделов подготовленные для тестирования проекты и исходя из них уже набирать сотрудников)\n-            function employDevelopers(web, mobile) {\n-                for (var i = 0; i < remainingProjects.length; i++) {\n-                    switch (remainingProjects[i].type) {\n-                        case 'web': web.developers.push(new Developer('web'));\n-                            break;\n-                        case 'mobile': mobile.developers.push(new Developer('mobile'));\n-                            break;\n-                    }\n-                }\n-            }\n-            //метод распределения проектов по отделам\n-            this.distributeByDepartments = function (projects, web, mobile) {\n-                var webProj = projects.filter(function (proj) {//web проекты\n-                    return proj.getType() == 'web';\n-                });\n-                var mobProj = projects.filter(function (proj) {//mob проекты\n-                    return proj.getType() == 'mobile';\n-                });\n-                var freeWeb = web.developers.filter(function (dev) {//кол-во свободных web программистов\n-                    return dev.getProject() === null\n-                }).length;\n-                web.newProj = webProj.slice(0, freeWeb);//передача в web-отдел\n-                var freeMob = mobile.developers.filter(function (dev) {//кол-во свободных mob программистов\n-                    return dev.getProject() === null\n-                }).length;\n-                mobile.newProj = mobProj.slice(0, freeMob);//передача в mob-отдел\n-                remainingProjects = webProj.slice(freeWeb).concat(mobProj.slice(freeMob));//оставшиеся проекты\n+class Boss {\n+    constructor() {\n+        this.remainingProjects = new Array();\n+        this.web = null;\n+        this.mobile = null;\n+        this.qa = null;\n+        this.projectsToTest = [];\n+        this.doneProjects = [];\n+        this._newProjects = [];\n+        this._devsToDismiss = [];\n+        this._company = null;\n+    }\n+    setCompany(company) {// устан. компанию \n+        this._company = company;\n+    }\n+    setNewProjects(newProj) {// устан новые проекты\n+        this._newProjects = newProj;\n+    }\n+    addRemainingProjs(projects) {// добавляем оставшийся проект\n+        this.remainingProjects = this.remainingProjects.concat(projects);\n+    }\n+    distrProjects() {//распределяем проекты\n+        //если есть вчерашние проекты распределяем их, иначе распределяем новые\n+        var projectsToDistr = this.remainingProjects.length > 0 ? this.remainingProjects : this._newProjects;\n+        var webProjects = projectsToDistr.filter(function (project) {\n+            return project.getType() === 'web';\n+        });\n+        if (webProjects.length) {\n+            this.web.distributeByDevs(webProjects);\n+        }\n+        var mobProjects = projectsToDistr.filter(function (project) {\n+            return project.getType() === 'mobile';\n+        });\n+        if (mobProjects.length) {\n+            this.mobile.distributeByDevs(mobProjects);\n+        }\n+        if (this.projectsToTest.length) {\n+            var projects = this.projectsToTest;\n+            this.qa.distributeByDevs(projects);\n+        }\n+        //если распределяли вчерашние проекты, то удаляем их из оставшихся\n+        if (projectsToDistr == this.remainingProjects) {\n+            this.remainingProjects.length = 0;\n+        }\n+    }\n+    addProjectToTest(project) {//добавляем проект готовый к тестированию\n+        this.projectsToTest.push(project);\n+    }\n+    addDoneProject(project) {//добавляем выполненый проект\n+        this.doneProjects.push(project);\n+    }\n+    deleteDoneProjects() {//удаляем выполненые проекты\n+        this._company.incDoneProjects(this.doneProjects.length);\n+        this.doneProjects.forEach(function (dProj) {\n+            dProj.developers.forEach((dev) => {\n+                dev.incCountDoneProjects();\n+                dev.setProject(null);\n+            });\n+        })\n+        this.doneProjects.length = 0\n+    }\n+    employDevs() {// нанимаем новых программистов для реализации оставшихся проектов\n+        this.remainingProjects.forEach((rProj) => {\n+            switch (rProj.getType()) {\n+                case 'web': this.web.addDeveloper(new Developer('web'));\n+                    break;\n+                case 'mobile': this.mobile.addDeveloper(new Developer('mobile'));\n+                    break;\n+                case 'qa': this.qa.addDeveloper(new Developer('qa'));\n             }\n+        })\n+    }\n+}\n \n+class Project {\n+    constructor() {\n+        this._complexity = Math.floor(Math.random() * 3 + 1);  //сложность проекта\n+        this._type = Math.floor(Math.random() * 2 + 1) == 1 ? 'web' : 'mobile';  //тип проекта\n+        this.developers = [];  // разработчики проекта\n+        this.daysOfDevelopment = 0;//текущее кол-во дней на разработке\n+    }\n+    getComplexity() {\n+        return this._complexity;\n+    }\n+    getType() {\n+        return this._type;\n+    }\n+    setType(type) {\n+        this._type = type;\n+    }\n+    setDeveloper(dev) {//устан. программиста для проекта\n+        this.developers.push(dev);\n+    }\n+    getTimeToDo() {// количество дней для выполнения проекта \n+        return Math.ceil(this._complexity / this.developers.length);\n+    }\n+}\n+class Developer {\n+    constructor(profession) {\n+        this.profession = profession;//специальность\n+        this._project = null;//проект\n+        this.freeDays = 0;//кол-во свободных дней\n+        this._countDoneProjects = 0;//кол-во готовых проектов\n+    }\n+    getProject() {\n+        return this._project;\n+    }\n+    setProject(proj) {//устан. проект для программиста\n+        this._project = proj;\n+        this.freeDays = 0;\n+    }\n+    incFreeDays() {// увеличиваем свободные дни\n+        this.freeDays++;\n+    }\n+    incCountDoneProjects() {//увеличиваем число готовых проектов\n+        this._countDoneProjects++;\n+    }\n+    getCountDoneProjects() {\n+        return this._countDoneProjects;\n+    }\n+}\n+class Department {\n+    constructor(name) {\n+        this.name = name;//название\n+        this.developers = [];//разработчики\n+        this.projects = [];//проекты на разработке\n+        this._boss = null;//директор\n+        this._company = null;//компания\n+    }\n+    setBoss(boss) {//устан. директора\n+        if (boss instanceof Boss) {\n+            this._boss = boss;\n         }\n-        //Функция для создания разработчиков\n-        function Developer(profession) {\n-            this.profession = profession;\n-            var project = null;//переменная для пртсвоения проекта разработчику\n-            var doneProjects = 0;//готовые проекты\n-            var freeDays = 0;//свободные дни (для увольнения)\n-            this.setProject = function (proj) {//присвоить проект и сбросить свободные дни\n-                project = proj;\n-                freeDays = 0;\n-            }\n-            this.addDoneProject = function () {//увеличить на один готовый проект\n-                doneProjects++;\n-            }\n-            this.getDoneProjects = function () {\n-                return doneProjects;\n-            }\n-            this.incFreeDays = function () {//если не получил проект увеличить кол-во свободных дней\n-                freeDays++;\n-            }\n-            this.getFreeDays = function () {\n-                return freeDays;\n-            }\n-            this.getProject = function () {\n-                return project;\n+    }\n+    setCompany(company) {\n+        this._company = company;\n+    }\n+    joinDevToProj(dev, proj) {//устан. проекта программисту и наоборот\n+        dev.setProject(proj);\n+        proj.setDeveloper(dev);\n+    }\n+    addDeveloper(dev) {// добавляем программиста\n+        this.developers.push(dev);\n+        this._company.incEmployedDevs();\n+    }\n+    distributeByDevs(projects) {  //метод распределения проектов по разработчикам\n+        for (var dev = 0; dev < this.developers.length; dev++) {\n+            if (projects.length) {\n+                if (this.developers[dev].getProject() === null) {\n+                    var project = projects.pop();\n+                    this.joinDevToProj(this.developers[dev], project);\n+                    this.projects.push(project);  //проекты принятые на разработку\n+                }\n+            } else {\n+                break;\n             }\n         }\n-        // Функция для создания проектов\n-        function Project() {\n-            var complexity = Math.floor(Math.random() * 3 + 1);//сложность проекта\n-            var type = Math.floor(Math.random() * 2 + 1) == 1 ? 'web' : 'mobile';//тип проекта\n-            this.done = false;//прошел проверку или нет\n-            this.countDevs = 0;//кол-во работающих над проектом разработчиков\n-            this.developer = null;///можно создать переменную которая будет ссылаться на разработчика,\n-            //чтобы когда проект пройдет тестирование разработчику установить NULL в поле project(показать что он свободен)\n-            this.getComplexity = function () {\n-                return complexity;\n-            };\n-            this.getType = function () {\n-                return type;\n+        if (projects.length) {//если есть проекты для разработки которых нет ресурсов, то возвращаем их директору\n+            this._boss.addRemainingProjs(projects);\n+        }\n+    }\n+    checkDevsToDismiss() { //проверяем разработчиков(увольнение)          \n+        if (this.developers.length) {\n+            var isToDismiss = false;\n+            var index = 0;\n+            var min = this.developers[0];\n+            this.developers.forEach(function (dev, ind) {\n+                if (dev.freeDays >= 3) {\n+                    if (dev.getCountDoneProjects() < min.getCountDoneProjects()) {\n+                        min = dev;\n+                        index = ind;\n+                        isToDismiss = true;\n+                    }\n+                }\n+            });\n+            if (isToDismiss) {\n+                delete this.developers[index];\n+                this.developers = this.developers.filter((dev) => {\n+                    return (dev !== 'undefined');\n+                })\n+                this._company.incDismissedDevs();\n             }\n         }\n-        //Функция для создания отделов\n-        //На мой взгляд этот класс должен быть общим для всех отделов, а далее необходимо создать отдельно классы Mobile & QA так как\n-        // у них должен быть расширен функционал, т. е. mobile может распределять один проект между несколькими разработчиками, Qa отдел тоже как то должен \"запрашивать\"\n-        //новых тестировщиков (или директор нанимает их заранее, когда получает новыее проекты, не совсем яснен данный момент)\n-        function Department(name) {\n-            var self = this;\n-            this.name = name;\n-            this.newProj = [];\n-            this.developers = [];//массив для хранения разработчиков\n-            this.distrituteByDev = function () {//метод распределения проектов по разработчикам\n-                this.newProj.forEach(function (project) {//в цикле перебирается каждый проект, и если для него есть свободный программист, то он присваивается\n-                    //программисту и наоборот\n-                    for (var j = 0; j < self.developers.length; j++) {\n-                        self.developers[j].setProject(project);\n-                        project.developer = self.developers[j];\n+    }\n+    checkProjects() {//проверяем проекты(готов или нет)\n+        if (this.projects.length) {\n+            this.projects.forEach((proj, ind) => {\n+                if (proj.daysOfDevelopment == proj.getTimeToDo()) {\n+                    proj.daysOfDevelopment = 0;\n+                    proj.setType('qa');\n+                    this._boss.addProjectToTest(proj);\n+                    delete this.projects[ind];\n+                }\n+            });\n+            this.projects = this.projects.filter((proj) => {","path":"oop-task.js","position":365,"original_position":365,"commit_id":"b21351749d8f4e3cc83ab3f26c305bd7cb23c0b5","original_commit_id":"b21351749d8f4e3cc83ab3f26c305bd7cb23c0b5","user":{"login":"mikhailmoshnogorsky","id":8090835,"node_id":"MDQ6VXNlcjgwOTA4MzU=","avatar_url":"https://avatars0.githubusercontent.com/u/8090835?v=4","gravatar_id":"","url":"https://api.github.com/users/mikhailmoshnogorsky","html_url":"https://github.com/mikhailmoshnogorsky","followers_url":"https://api.github.com/users/mikhailmoshnogorsky/followers","following_url":"https://api.github.com/users/mikhailmoshnogorsky/following{/other_user}","gists_url":"https://api.github.com/users/mikhailmoshnogorsky/gists{/gist_id}","starred_url":"https://api.github.com/users/mikhailmoshnogorsky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikhailmoshnogorsky/subscriptions","organizations_url":"https://api.github.com/users/mikhailmoshnogorsky/orgs","repos_url":"https://api.github.com/users/mikhailmoshnogorsky/repos","events_url":"https://api.github.com/users/mikhailmoshnogorsky/events{/privacy}","received_events_url":"https://api.github.com/users/mikhailmoshnogorsky/received_events","type":"User","site_admin":false},"body":"может лучше удалять по проверке project.type == 'qa' через фильтрацию? и не делать delete выше","created_at":"2019-08-29T09:01:22Z","updated_at":"2019-08-29T09:01:23Z","html_url":"https://github.com/Dm-R/OOP-task/pull/2#discussion_r318961050","pull_request_url":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/Dm-R/OOP-task/pulls/comments/318961050"},"html":{"href":"https://github.com/Dm-R/OOP-task/pull/2#discussion_r318961050"},"pull_request":{"href":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2","id":311330054,"node_id":"MDExOlB1bGxSZXF1ZXN0MzExMzMwMDU0","html_url":"https://github.com/Dm-R/OOP-task/pull/2","diff_url":"https://github.com/Dm-R/OOP-task/pull/2.diff","patch_url":"https://github.com/Dm-R/OOP-task/pull/2.patch","issue_url":"https://api.github.com/repos/Dm-R/OOP-task/issues/2","number":2,"state":"open","locked":false,"title":"rectification","user":{"login":"Dm-R","id":52782087,"node_id":"MDQ6VXNlcjUyNzgyMDg3","avatar_url":"https://avatars0.githubusercontent.com/u/52782087?v=4","gravatar_id":"","url":"https://api.github.com/users/Dm-R","html_url":"https://github.com/Dm-R","followers_url":"https://api.github.com/users/Dm-R/followers","following_url":"https://api.github.com/users/Dm-R/following{/other_user}","gists_url":"https://api.github.com/users/Dm-R/gists{/gist_id}","starred_url":"https://api.github.com/users/Dm-R/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dm-R/subscriptions","organizations_url":"https://api.github.com/users/Dm-R/orgs","repos_url":"https://api.github.com/users/Dm-R/repos","events_url":"https://api.github.com/users/Dm-R/events{/privacy}","received_events_url":"https://api.github.com/users/Dm-R/received_events","type":"User","site_admin":false},"body":"","created_at":"2019-08-27T11:09:10Z","updated_at":"2019-08-29T09:01:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0cc68758b370c49f4b5c71b33456d5bf1662f118","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2/commits","review_comments_url":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2/comments","review_comment_url":"https://api.github.com/repos/Dm-R/OOP-task/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Dm-R/OOP-task/issues/2/comments","statuses_url":"https://api.github.com/repos/Dm-R/OOP-task/statuses/b21351749d8f4e3cc83ab3f26c305bd7cb23c0b5","head":{"label":"Dm-R:editing","ref":"editing","sha":"b21351749d8f4e3cc83ab3f26c305bd7cb23c0b5","user":{"login":"Dm-R","id":52782087,"node_id":"MDQ6VXNlcjUyNzgyMDg3","avatar_url":"https://avatars0.githubusercontent.com/u/52782087?v=4","gravatar_id":"","url":"https://api.github.com/users/Dm-R","html_url":"https://github.com/Dm-R","followers_url":"https://api.github.com/users/Dm-R/followers","following_url":"https://api.github.com/users/Dm-R/following{/other_user}","gists_url":"https://api.github.com/users/Dm-R/gists{/gist_id}","starred_url":"https://api.github.com/users/Dm-R/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dm-R/subscriptions","organizations_url":"https://api.github.com/users/Dm-R/orgs","repos_url":"https://api.github.com/users/Dm-R/repos","events_url":"https://api.github.com/users/Dm-R/events{/privacy}","received_events_url":"https://api.github.com/users/Dm-R/received_events","type":"User","site_admin":false},"repo":{"id":201598382,"node_id":"MDEwOlJlcG9zaXRvcnkyMDE1OTgzODI=","name":"OOP-task","full_name":"Dm-R/OOP-task","private":false,"owner":{"login":"Dm-R","id":52782087,"node_id":"MDQ6VXNlcjUyNzgyMDg3","avatar_url":"https://avatars0.githubusercontent.com/u/52782087?v=4","gravatar_id":"","url":"https://api.github.com/users/Dm-R","html_url":"https://github.com/Dm-R","followers_url":"https://api.github.com/users/Dm-R/followers","following_url":"https://api.github.com/users/Dm-R/following{/other_user}","gists_url":"https://api.github.com/users/Dm-R/gists{/gist_id}","starred_url":"https://api.github.com/users/Dm-R/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dm-R/subscriptions","organizations_url":"https://api.github.com/users/Dm-R/orgs","repos_url":"https://api.github.com/users/Dm-R/repos","events_url":"https://api.github.com/users/Dm-R/events{/privacy}","received_events_url":"https://api.github.com/users/Dm-R/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Dm-R/OOP-task","description":"Задание на ООП.","fork":false,"url":"https://api.github.com/repos/Dm-R/OOP-task","forks_url":"https://api.github.com/repos/Dm-R/OOP-task/forks","keys_url":"https://api.github.com/repos/Dm-R/OOP-task/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Dm-R/OOP-task/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Dm-R/OOP-task/teams","hooks_url":"https://api.github.com/repos/Dm-R/OOP-task/hooks","issue_events_url":"https://api.github.com/repos/Dm-R/OOP-task/issues/events{/number}","events_url":"https://api.github.com/repos/Dm-R/OOP-task/events","assignees_url":"https://api.github.com/repos/Dm-R/OOP-task/assignees{/user}","branches_url":"https://api.github.com/repos/Dm-R/OOP-task/branches{/branch}","tags_url":"https://api.github.com/repos/Dm-R/OOP-task/tags","blobs_url":"https://api.github.com/repos/Dm-R/OOP-task/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Dm-R/OOP-task/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Dm-R/OOP-task/git/refs{/sha}","trees_url":"https://api.github.com/repos/Dm-R/OOP-task/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Dm-R/OOP-task/statuses/{sha}","languages_url":"https://api.github.com/repos/Dm-R/OOP-task/languages","stargazers_url":"https://api.github.com/repos/Dm-R/OOP-task/stargazers","contributors_url":"https://api.github.com/repos/Dm-R/OOP-task/contributors","subscribers_url":"https://api.github.com/repos/Dm-R/OOP-task/subscribers","subscription_url":"https://api.github.com/repos/Dm-R/OOP-task/subscription","commits_url":"https://api.github.com/repos/Dm-R/OOP-task/commits{/sha}","git_commits_url":"https://api.github.com/repos/Dm-R/OOP-task/git/commits{/sha}","comments_url":"https://api.github.com/repos/Dm-R/OOP-task/comments{/number}","issue_comment_url":"https://api.github.com/repos/Dm-R/OOP-task/issues/comments{/number}","contents_url":"https://api.github.com/repos/Dm-R/OOP-task/contents/{+path}","compare_url":"https://api.github.com/repos/Dm-R/OOP-task/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Dm-R/OOP-task/merges","archive_url":"https://api.github.com/repos/Dm-R/OOP-task/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Dm-R/OOP-task/downloads","issues_url":"https://api.github.com/repos/Dm-R/OOP-task/issues{/number}","pulls_url":"https://api.github.com/repos/Dm-R/OOP-task/pulls{/number}","milestones_url":"https://api.github.com/repos/Dm-R/OOP-task/milestones{/number}","notifications_url":"https://api.github.com/repos/Dm-R/OOP-task/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Dm-R/OOP-task/labels{/name}","releases_url":"https://api.github.com/repos/Dm-R/OOP-task/releases{/id}","deployments_url":"https://api.github.com/repos/Dm-R/OOP-task/deployments","created_at":"2019-08-10T07:51:13Z","updated_at":"2019-08-10T07:57:23Z","pushed_at":"2019-08-27T11:09:10Z","git_url":"git://github.com/Dm-R/OOP-task.git","ssh_url":"git@github.com:Dm-R/OOP-task.git","clone_url":"https://github.com/Dm-R/OOP-task.git","svn_url":"https://github.com/Dm-R/OOP-task","homepage":null,"size":5,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":2,"license":null,"forks":1,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"Dm-R:master","ref":"master","sha":"4ad416bf17faef61d5d0e8c379f2ac1600bf3137","user":{"login":"Dm-R","id":52782087,"node_id":"MDQ6VXNlcjUyNzgyMDg3","avatar_url":"https://avatars0.githubusercontent.com/u/52782087?v=4","gravatar_id":"","url":"https://api.github.com/users/Dm-R","html_url":"https://github.com/Dm-R","followers_url":"https://api.github.com/users/Dm-R/followers","following_url":"https://api.github.com/users/Dm-R/following{/other_user}","gists_url":"https://api.github.com/users/Dm-R/gists{/gist_id}","starred_url":"https://api.github.com/users/Dm-R/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dm-R/subscriptions","organizations_url":"https://api.github.com/users/Dm-R/orgs","repos_url":"https://api.github.com/users/Dm-R/repos","events_url":"https://api.github.com/users/Dm-R/events{/privacy}","received_events_url":"https://api.github.com/users/Dm-R/received_events","type":"User","site_admin":false},"repo":{"id":201598382,"node_id":"MDEwOlJlcG9zaXRvcnkyMDE1OTgzODI=","name":"OOP-task","full_name":"Dm-R/OOP-task","private":false,"owner":{"login":"Dm-R","id":52782087,"node_id":"MDQ6VXNlcjUyNzgyMDg3","avatar_url":"https://avatars0.githubusercontent.com/u/52782087?v=4","gravatar_id":"","url":"https://api.github.com/users/Dm-R","html_url":"https://github.com/Dm-R","followers_url":"https://api.github.com/users/Dm-R/followers","following_url":"https://api.github.com/users/Dm-R/following{/other_user}","gists_url":"https://api.github.com/users/Dm-R/gists{/gist_id}","starred_url":"https://api.github.com/users/Dm-R/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dm-R/subscriptions","organizations_url":"https://api.github.com/users/Dm-R/orgs","repos_url":"https://api.github.com/users/Dm-R/repos","events_url":"https://api.github.com/users/Dm-R/events{/privacy}","received_events_url":"https://api.github.com/users/Dm-R/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Dm-R/OOP-task","description":"Задание на ООП.","fork":false,"url":"https://api.github.com/repos/Dm-R/OOP-task","forks_url":"https://api.github.com/repos/Dm-R/OOP-task/forks","keys_url":"https://api.github.com/repos/Dm-R/OOP-task/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Dm-R/OOP-task/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Dm-R/OOP-task/teams","hooks_url":"https://api.github.com/repos/Dm-R/OOP-task/hooks","issue_events_url":"https://api.github.com/repos/Dm-R/OOP-task/issues/events{/number}","events_url":"https://api.github.com/repos/Dm-R/OOP-task/events","assignees_url":"https://api.github.com/repos/Dm-R/OOP-task/assignees{/user}","branches_url":"https://api.github.com/repos/Dm-R/OOP-task/branches{/branch}","tags_url":"https://api.github.com/repos/Dm-R/OOP-task/tags","blobs_url":"https://api.github.com/repos/Dm-R/OOP-task/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Dm-R/OOP-task/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Dm-R/OOP-task/git/refs{/sha}","trees_url":"https://api.github.com/repos/Dm-R/OOP-task/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Dm-R/OOP-task/statuses/{sha}","languages_url":"https://api.github.com/repos/Dm-R/OOP-task/languages","stargazers_url":"https://api.github.com/repos/Dm-R/OOP-task/stargazers","contributors_url":"https://api.github.com/repos/Dm-R/OOP-task/contributors","subscribers_url":"https://api.github.com/repos/Dm-R/OOP-task/subscribers","subscription_url":"https://api.github.com/repos/Dm-R/OOP-task/subscription","commits_url":"https://api.github.com/repos/Dm-R/OOP-task/commits{/sha}","git_commits_url":"https://api.github.com/repos/Dm-R/OOP-task/git/commits{/sha}","comments_url":"https://api.github.com/repos/Dm-R/OOP-task/comments{/number}","issue_comment_url":"https://api.github.com/repos/Dm-R/OOP-task/issues/comments{/number}","contents_url":"https://api.github.com/repos/Dm-R/OOP-task/contents/{+path}","compare_url":"https://api.github.com/repos/Dm-R/OOP-task/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Dm-R/OOP-task/merges","archive_url":"https://api.github.com/repos/Dm-R/OOP-task/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Dm-R/OOP-task/downloads","issues_url":"https://api.github.com/repos/Dm-R/OOP-task/issues{/number}","pulls_url":"https://api.github.com/repos/Dm-R/OOP-task/pulls{/number}","milestones_url":"https://api.github.com/repos/Dm-R/OOP-task/milestones{/number}","notifications_url":"https://api.github.com/repos/Dm-R/OOP-task/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Dm-R/OOP-task/labels{/name}","releases_url":"https://api.github.com/repos/Dm-R/OOP-task/releases{/id}","deployments_url":"https://api.github.com/repos/Dm-R/OOP-task/deployments","created_at":"2019-08-10T07:51:13Z","updated_at":"2019-08-10T07:57:23Z","pushed_at":"2019-08-27T11:09:10Z","git_url":"git://github.com/Dm-R/OOP-task.git","ssh_url":"git@github.com:Dm-R/OOP-task.git","clone_url":"https://github.com/Dm-R/OOP-task.git","svn_url":"https://github.com/Dm-R/OOP-task","homepage":null,"size":5,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":2,"license":null,"forks":1,"open_issues":2,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2"},"html":{"href":"https://github.com/Dm-R/OOP-task/pull/2"},"issue":{"href":"https://api.github.com/repos/Dm-R/OOP-task/issues/2"},"comments":{"href":"https://api.github.com/repos/Dm-R/OOP-task/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/Dm-R/OOP-task/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Dm-R/OOP-task/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/Dm-R/OOP-task/statuses/b21351749d8f4e3cc83ab3f26c305bd7cb23c0b5"}},"author_association":"OWNER"}}
other: {"actor":{"display_login":"mikhailmoshnogorsky"}}