コード例 #1
0
        public async Task <ActionResult <CustomerForGetDTO> > Post(CustomerForAddDTO model)
        {
            if (await _customerRepository.IsExistByPhone(model.Phone).ConfigureAwait(true))
            {
                return(Conflict(new ApiResponse(409, StringConcatenates.Exist("Phone", model.Phone))));
            }

            if (await _customerRepository.IsExistByEmail(model.Email).ConfigureAwait(true))
            {
                return(Conflict(new ApiResponse(409, StringConcatenates.Exist("Email", model.Email))));
            }

            Customer customer = _mapper.Map <Customer>(model);
            string   password = SecurePassword.GeneratePassword(8);

            SecurePassword.CreatePasswordHash(password, out byte[] passwordHash, out byte[] passwordSalt);
            customer.PasswordHash = passwordHash;
            customer.PasswordSalt = passwordSalt;

            await _customerRepository.AddAsync(customer).ConfigureAwait(true);

            await _unitOfWork.CompleteAsync().ConfigureAwait(true);

            Email.Send("Momen", customer.Email, "password", password);

            CustomerForGetDTO customerDto = _mapper.Map <CustomerForGetDTO>(customer);

            return(Ok(customerDto));
        }
コード例 #2
0
        public async Task <ActionResult <CustomerForGetDTO> > Get(int id)
        {
            if (!await _customerRepository.IsExist(id).ConfigureAwait(true))
            {
                return(NotFound(new ApiResponse(404, StringConcatenates.NotExist("Customer", id))));
            }

            Customer customer = await _customerRepository.GetAsync(id).ConfigureAwait(true);

            CustomerForGetDTO customerDto = _mapper.Map <CustomerForGetDTO>(customer);

            return(Ok(customerDto));
        }
コード例 #3
0
        public async Task <ActionResult <CustomerForGetDTO> > Delete(int id)
        {
            if (!await _customerRepository.IsExist(id).ConfigureAwait(true))
            {
                return(NotFound(new ApiResponse(404, StringConcatenates.NotExist("Customer", id))));
            }

            Customer customer = await _customerRepository.GetAsync(id).ConfigureAwait(true);

            _customerRepository.Remove(customer);
            await _unitOfWork.CompleteAsync().ConfigureAwait(true);

            FolderOperations.DeleteFolder($"Customers/{id}");

            CustomerForGetDTO customerDto = _mapper.Map <CustomerForGetDTO>(customer);

            return(Ok(customerDto));
        }
コード例 #4
0
        public async Task <ActionResult> Unblock(int id)
        {
            if (!await _customerRepository.IsExist(id).ConfigureAwait(true))
            {
                return(NotFound(new ApiResponse(404, StringConcatenates.NotExist("Customer", id))));
            }

            Customer customer = await _customerRepository.GetAsync(id).ConfigureAwait(true);

            customer.IsBlocked = false;

            _customerRepository.Edit(customer);
            await _unitOfWork.CompleteAsync().ConfigureAwait(true);

            CustomerForGetDTO customerDto = _mapper.Map <CustomerForGetDTO>(customer);

            return(Ok(customerDto));
        }
コード例 #5
0
        public async Task <ActionResult <CustomerForGetDTO> > Put(int id, CustomerForEditDTO model)
        {
            if (id != model.Id)
            {
                return(BadRequest(new ApiResponse(400, StringConcatenates.NotEqualIds(id, model.Id))));
            }

            if (!await _customerRepository.IsExist(id).ConfigureAwait(true))
            {
                return(NotFound(new ApiResponse(404, StringConcatenates.NotExist("Customer", id))));
            }

            if (await _customerRepository.IsExistByPhone(id, model.Phone).ConfigureAwait(true))
            {
                return(Conflict(new ApiResponse(409, StringConcatenates.Exist("Phone", model.Phone))));
            }

            if (await _customerRepository.IsExistByEmail(id, model.Email).ConfigureAwait(true))
            {
                return(Conflict(new ApiResponse(409, StringConcatenates.Exist("Email", model.Email))));
            }

            Customer oldCustomer = await _customerRepository.GetAsync(id).ConfigureAwait(true);

            Customer customer = _mapper.Map <Customer>(model);

            customer.PasswordHash = oldCustomer.PasswordHash;
            customer.PasswordSalt = oldCustomer.PasswordSalt;
            customer.IsBlocked    = oldCustomer.IsBlocked;
            customer.IsRandom     = oldCustomer.IsRandom;
            customer.PictureName  = oldCustomer.PictureName;

            _customerRepository.Edit(customer);
            await _unitOfWork.CompleteAsync().ConfigureAwait(true);

            CustomerForGetDTO customerDto = _mapper.Map <CustomerForGetDTO>(customer);

            return(Ok(customerDto));
        }
コード例 #6
0
        public async Task <ActionResult> UploadPicture(int id, [FromForm] CustomerForPictureDTO model)
        {
            if (id != model.Id)
            {
                return(BadRequest(new ApiResponse(400, StringConcatenates.NotEqualIds(id, model.Id))));
            }

            if (!await _customerRepository.IsExist(id).ConfigureAwait(true))
            {
                return(NotFound(new ApiResponse(404, StringConcatenates.NotExist("Customers", id))));
            }

            FileOperations.WriteFile($"Customers/{model.Id}", model.Picture);

            Customer customer = await _customerRepository.GetAsync(model.Id).ConfigureAwait(true);

            customer.PictureName = model.Picture.FileName;
            _customerRepository.Edit(customer);
            await _unitOfWork.CompleteAsync().ConfigureAwait(true);

            CustomerForGetDTO customerDto = _mapper.Map <CustomerForGetDTO>(customer);

            return(Ok(customerDto));
        }