diff --git "a/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.DataAccess/Repositories/InMemoryRepository.cs" "b/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.DataAccess/Repositories/InMemoryRepository.cs"
index 77989cf9..26a6dc23 100644
--- "a/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.DataAccess/Repositories/InMemoryRepository.cs"	
+++ "b/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.DataAccess/Repositories/InMemoryRepository.cs"	
@@ -1,5 +1,6 @@
 using PromoCodeFactory.Core.Abstractions.Repositories;
 using PromoCodeFactory.Core.Domain;
+using PromoCodeFactory.Core.Exceptions;
 using System.Collections.Concurrent;
 
 namespace PromoCodeFactory.DataAccess.Repositories;
@@ -19,21 +20,31 @@ public Task<IReadOnlyCollection<T>> GetAll(CancellationToken ct)
 
     public Task<T?> GetById(Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        _data.TryGetValue(id, out var entity);
+        return Task.FromResult(entity);
     }
 
     public Task Add(T entity, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        _data.TryAdd(entity.Id, entity);
+        return Task.CompletedTask;
     }
 
     public Task Update(T entity, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        if (!_data.ContainsKey(entity.Id))
+            throw new EntityNotFoundException<T>(entity.Id);
+            
+        _data[entity.Id] = entity;
+        return Task.CompletedTask;
     }
 
     public Task Delete(Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        if (!_data.ContainsKey(id))
+            throw new EntityNotFoundException<T>(id);
+
+        _data.TryRemove(id, out var result);
+        return Task.CompletedTask;
     }
 }
diff --git "a/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.WebHost/Controllers/EmployeesController.cs" "b/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.WebHost/Controllers/EmployeesController.cs"
index 0de8444f..dbf914ed 100644
--- "a/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.WebHost/Controllers/EmployeesController.cs"	
+++ "b/Homeworks/02 \320\227\320\275\320\260\320\272\320\276\320\274\321\201\321\202\320\262\320\276 \321\201 \320\277\321\200\320\276\320\265\320\272\321\202\320\276\320\274 \320\270 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217 CRUD-\320\276\320\277\320\265\321\200\320\260\321\206\320\270\320\271/src/PromoCodeFactory.WebHost/Controllers/EmployeesController.cs"	
@@ -34,7 +34,11 @@ public async Task<ActionResult<IEnumerable<EmployeeShortResponse>>> Get(Cancella
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
     public async Task<ActionResult<EmployeeResponse>> GetById([FromRoute] Guid id, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        var employee = await employeeRepository.GetById(id, ct);
+        if (employee == null)
+            return NotFound();
+
+        return Ok(Mapper.ToEmployeeResponse(employee));
     }
 
     /// <summary>
@@ -45,7 +49,17 @@ public async Task<ActionResult<EmployeeResponse>> GetById([FromRoute] Guid id, C
     [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)]
     public async Task<ActionResult<EmployeeResponse>> Create([FromBody] EmployeeCreateRequest request, CancellationToken ct)
     {
-        throw new NotImplementedException();
+        if (!ModelState.IsValid)
+            return BadRequest();
+
+        var role = await roleRepository.GetById(request.RoleId, ct);
+        if (role == null)
+            return BadRequest();
+
+        var employee = Mapper.ToEmployee(request, role);
+        await employeeRepository.Add(employee, ct);
+
+        return CreatedAtAction(nameof(GetById), new { id = employee.Id }, Mapper.ToEmployeeResponse(employee));
     }
 
     /// <summary>
@@ -60,7 +74,32 @@ public async Task<ActionResult<EmployeeResponse>> Update(
         [FromBody] EmployeeUpdateRequest request,
         CancellationToken ct)
     {
-        throw new NotImplementedException();
+        if (!ModelState.IsValid)
+            return BadRequest();
+
+        var role = await roleRepository.GetById(request.RoleId, ct);
+        if (role == null)
+            return BadRequest();
+
+        try
+        {
+            var employee = new Employee
+            {
+                Id = id,
+                FirstName = request.FirstName,
+                LastName = request.LastName,
+                Email = request.Email,
+                Role = role,
+                AppliedPromocodesCount = 0
+            };
+            await employeeRepository.Update(employee, ct);
+            
+            return Ok(Mapper.ToEmployeeResponse(employee));
+        }
+        catch (EntityNotFoundException)
+        {
+            return NotFound();
+        }
     }
 
     /// <summary>
@@ -73,6 +112,14 @@ public async Task<IActionResult> Delete(
         [FromRoute] Guid id,
         CancellationToken ct)
     {
-        throw new NotImplementedException();
+        try
+        {
+            await employeeRepository.Delete(id, ct);
+            return NoContent();
+        }
+        catch (EntityNotFoundException)
+        {
+            return NotFound();
+        }
     }
 }
