示例#1
0
 public async Task <Model.Models.Customer> Insert([FromBody] CustomerInsertRequest request)
 {
     if (!ModelState.IsValid)
     {
         throw new UserException("Morate popuniti sva polja ispravno");
     }
     return(await _customerService.Insert(request));
 }
        public async Task <Model.Models.Customer> Insert(CustomerInsertRequest request)
        {
            if (request.Password != request.PasswordConfirm)
            {
                throw new UserException("Lozinke moraju biti iste");
            }

            var salt = AccountService.GenerateSalt();
            var hash = AccountService.GenerateHash(salt, request.Password);

            // Adding account for customer
            Database.Account customerAccount = new Database.Account()
            {
                DateCreated  = DateTime.Now,
                Email        = request.Email,
                PasswordSalt = salt,
                PasswordHash = hash,
                PhoneNumber  = request.PhoneNumber,
                Username     = request.Username
            };

            await _context.Account.AddAsync(customerAccount);

            await _context.SaveChangesAsync();

            // Adding customer

            var result = await _context.Account
                         .Where(x => x.PasswordSalt == salt)
                         .SingleOrDefaultAsync();

            var accountId = result.Id;

            Database.Customer customer = new Database.Customer()
            {
                AccountId   = accountId,
                Address     = request.Address,
                AreaId      = request.AreaId,
                CompanyName = request.CompanyName
            };

            _context.Customer.Add(customer);
            _context.SaveChanges();

            return(_mapper.Map <Model.Models.Customer>(customer));
        }