{"id":20841888,"url":"https://github.com/yuri-val/call-center-software","last_synced_at":"2026-04-27T02:32:11.719Z","repository":{"id":126525798,"uuid":"97573674","full_name":"yuri-val/call-center-software","owner":"yuri-val","description":"Dev Challenge 11 | FINAL","archived":false,"fork":false,"pushed_at":"2017-07-18T08:27:57.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-27T11:06:24.448Z","etag":null,"topics":["api-rails","devchallenge","devchallenge11","rails","rb","ror","ror-api","ruby"],"latest_commit_sha":null,"homepage":"http://devchallenge.it/","language":"Ruby","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/yuri-val.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-18T08:27:44.000Z","updated_at":"2017-07-18T08:30:08.000Z","dependencies_parsed_at":"2023-03-13T11:37:42.856Z","dependency_job_id":null,"html_url":"https://github.com/yuri-val/call-center-software","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yuri-val/call-center-software","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-val%2Fcall-center-software","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-val%2Fcall-center-software/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-val%2Fcall-center-software/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-val%2Fcall-center-software/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuri-val","download_url":"https://codeload.github.com/yuri-val/call-center-software/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuri-val%2Fcall-center-software/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32320279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api-rails","devchallenge","devchallenge11","rails","rb","ror","ror-api","ruby"],"created_at":"2024-11-18T01:22:16.563Z","updated_at":"2026-04-27T02:32:11.700Z","avatar_url":"https://github.com/yuri-val.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Task\nCall center software: There is a call center with employees that have certain expertise areas; customers are calling and indicate their desired area.\n\nYou have to write the server that directs the calls (binds customers to employees) maximizing the number of customer contacts that are fulfilled.\n\nThe server should handle 3 types of requests:\n1. `http://server.name/register?name=EmployeeName1\u0026area=bills\u0026area=contracts\u0026area=special-offers`\n    This request defines EmployeeName1 as an employee with three areas of expertise: bills,contracts and special-offers. Only one employee can be defined in a request. The same name can be redefined multiple times, because employees are becoming available after handling a\n    customer. The response must be code 200, with content: `WELCOME`\n\n2. `http://server.name/call?area=bills\u0026area=leases\u0026area=bills`\n    This indicates that a new batch of 3 customers are on the line. Two of them are interested in \"bills\" and one in \"leases\". Based on the list of registered employees, you have to assign (or decline) each call, in the order they appear in request. You have to respond with HTTP code\n    200 OK, and content is a JSON indicating the assigned employees. For example:\n    ```json\n    {\n      \"totalAssignments\" : \"1\",\n      \"assignments\" : [\n          {\n            \"area\" : \"bills\",\n            \"employee\" : \"EmployeeName1\"\n          },\n          {\n            \"area\" : \"leases\",\n            \"employee\" : \"\"\n          },\n          {\n            \"employee\" : \"\",\n            \"area\" : \"bills\"\n          }\n      ]\n    }\n    ```\n    \n    The reply above indicates that only one assignment was possible: EmployeeName1 takes the\n    first call about \"bills\". The other calls should be postponed because no employee is available.\n    This is indicated by empty \"employee\" value. Once an assignment is set, the employees listed\n    are busy taking the call, so they are no longer available. They may return later (via a register\n    request).\n3. `http://server.name/reset`\n    This is done usually at the end of a work day. It means that all registered employees leave\n    home: the system can restart tomorrow.\n\n# README\n\n## Algorithms\n\nThe easiest method of application operation was chosen. \nOnly one model (database table) was added to store data on employee areas. The model contains only 2 fields: name (employee name) and area.\n\nWhen the query `/register` is executed, records are created in the table with the employee and his areas.\n\nWhen the `/call` request is executed, the most previously registered user is selected based on the specified area.\n\nWhen the query `/reset` is performed, all records in the table are cleared.\n\n## How to run\n\n### Run with docker:\n\nJust one command:\n\n    docker-compose up\n    \n## Work with app\n\nApplication will be available at 'http://localhost:8080'.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuri-val%2Fcall-center-software","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuri-val%2Fcall-center-software","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuri-val%2Fcall-center-software/lists"}