Example #1
0
        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));
        }