Example #1
0
        public HttpResponseMessage CreateOrUpdate(UserRequest userRequest)
        {
            string apiName = "CreateOrUpdate(UserRequest userRequest=\n{" + userRequest + "})";
            var    guid    = Guid.NewGuid();

            logger.Info("Guid: \"{0}\" api/{1}/{2} was invoked", guid, controllerName, apiName);

            IUsersRepository usersRepository = new UsersRepository();

            try
            {
                if (!ModelState.IsValidField("userRequest.Email"))
                {
                    ;//  return CreateGeneralResultMessage("Invalid Email Address", false, ApiStatusCodes.InvalidEmail);
                }

                var userToUpdate = usersRepository.GetUserByEmail(userRequest.Email);

                if (userToUpdate == null)
                {//Create
                    logger.Info("Guid: \"{0}\" Start Creating new User", guid);

                    var token   = TokenGenerator.GenerateToken(userRequest.Email);
                    var newUser = new Users
                    {
                        Name      = userRequest.Name,
                        Email     = userRequest.Email,
                        CompanyId = userRequest.CompanyId,
                        Type      = userRequest.Type,
                        Token     = token
                    };
                    usersRepository.Create(newUser);

                    var createdUser = usersRepository.GetUserByToken(token);
                    usersRepository.AddNewAuthUser(createdUser.Id, PasswordEncryptor.Encrypt(userRequest.Password));

                    logger.Info("Guid: \"{0}\" completed Creating new User", guid);
                    return(CreateResponseMessage(newUser));
                }
                else
                {//Update
                    logger.Info("Guid: \"{0}\" Start Updating User", guid);

                    userToUpdate.Name = userRequest.Name;
                    // userToUpdate.Email = userRequest.Email;
                    userToUpdate.CompanyId = userRequest.CompanyId;
                    userToUpdate.Type      = userRequest.Type;

                    logger.Info("Guid: \"{0}\" completed Updating User", guid);
                    usersRepository.SaveChanges();
                    return(CreateResponseMessage(userToUpdate));
                }
            }
            catch (Exception ex)
            {
                logger.Error("Guid: \"{0}\" General Error: {1}", guid, ex);
                return(CreateGeneralResultMessage(ex.ToString(), false, ApiStatusCodes.InternalServerError));
            }
        }