{"id":19074025,"url":"https://github.com/edtoken/micro-shop","last_synced_at":"2025-06-24T23:07:57.223Z","repository":{"id":85012311,"uuid":"45189963","full_name":"edtoken/micro-shop","owner":"edtoken","description":"micro-shop","archived":false,"fork":false,"pushed_at":"2015-11-03T11:49:02.000Z","size":424,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"gh-pages","last_synced_at":"2025-02-22T04:27:46.835Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://edtoken.github.io/micro-shop/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edtoken.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-29T14:53:24.000Z","updated_at":"2015-11-02T07:05:53.000Z","dependencies_parsed_at":"2023-03-02T23:45:38.373Z","dependency_job_id":null,"html_url":"https://github.com/edtoken/micro-shop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/edtoken/micro-shop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edtoken%2Fmicro-shop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edtoken%2Fmicro-shop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edtoken%2Fmicro-shop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edtoken%2Fmicro-shop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edtoken","download_url":"https://codeload.github.com/edtoken/micro-shop/tar.gz/refs/heads/gh-pages","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edtoken%2Fmicro-shop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261771141,"owners_count":23207221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T01:49:27.834Z","updated_at":"2025-06-24T23:07:57.195Z","avatar_url":"https://github.com/edtoken.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Техническое задание \n\nЕсть product двух типов:\na) MainProduct extends Product\nб) UpsellProduct extends Product\n\nДля каждого товара из группы Main существует UpsellSpecification объект.\n\nProduct {\n   id: integer,\n   price: float,\n   stockItems: integer,\n   name: string\n}\n\nUpsellProduct extend Product {\n   upsellSpecifications: [UpsellAvailabalitySpecification]\n}\n\nКаждый объект из группы main может иметь связь к объектам upsell product через UpsellAvailabalitySpecification.\n\nДва разных MainProduct могут иметь связь с одним и тем же upsellProduct через разные UpsellAvailabalitySpecification\n\nUpsellAvailabalitySpecification {\nupsellProduct: UpsellProduct,\nmainProduct: MainProduct\nitemsInCart: integer, //items in cart of the mainProduct after upsell become available to be added in this cart\ntotalCartPrice: float //total cart amount of all product after upsell become available to be added in cart\n}\n\nЗадание: спроектировать объект Cart, соответствующий следующим требованиям:\n1) Метод добавления продукта в корзину с указанием quantity.\n2) Метод удаления продукта\n3) Метод изменения quantity продукта.\n4) Корзина не должна давать возможности добавлять конкретный UpsellProduct до момента пока корзина не соответствует условиям соответствующего UpsellAvailabalitySpecification\n5) UpsellProduct может добавляться только с quantity = 1\n6) При достижении Cart требований одного из UpsellAvailabalitySpecification, должен срабатывать триггер и вызываться подписчик ShowUpsellPopup.showUpsellInformation(upsell), но только\nесли upsell еще не добавлен в Cart\n\nShowUpsellPopup {\nshowUpsellInformation: function(upsell) {}\n}\n\n7) В любой момент времени объект Cart должен находиться в валидном состоянии.\n8) Реализовать метод sync() для синхронизации с сервером.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedtoken%2Fmicro-shop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedtoken%2Fmicro-shop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedtoken%2Fmicro-shop/lists"}