public async Task <IActionResult> Register(CancellationToken cancellationToken, [System.Web.Http.FromBody] CreateTenantBinding binding, [FromServices] TenantManager manager, [FromServices] ITenantRepository repository) { var tenant = await repository.Get(binding.Name, binding.Surname, binding.Password, cancellationToken); if (tenant != null) { return(BadRequest(new { errorText = "Invalid username or password." })); } try { tenant = await manager.Create(binding.Name, binding.Surname, binding.Password, binding.DateOfBirth, binding.Address, binding.EntranceNumber, binding.FlatNumber, cancellationToken); } catch (BuildingWithSuchAddressNotRegisteredException e) { return(NotFound()); } if (binding.Avatar != null) { byte[] avatarData = null; using (var binaryReader = new BinaryReader(binding.Avatar.OpenReadStream())) { avatarData = binaryReader.ReadBytes((int)binding.Avatar.Length); } tenant.PutAvatar(avatarData); } await repository.Save(tenant); return(await GetToken(tenant.TenatId)); }