public IActionResult AddExistingExternalUserToStep(AddResponsibleUserToStepDTO addExternalUserToStep)
        {
            Response.StatusCode = StatusCodes.Status202Accepted;

            if (string.IsNullOrEmpty(addExternalUserToStep.Step))
            {
                Response.StatusCode = StatusCodes.Status400BadRequest;

                return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
            }

            var existingUser = addExternalUserToStep.ExistingResponsibleUser;

            if (TryValidateModel(existingUser))
            {
                var result = _planRepository.AddUserToPlanStep(existingUser.Id.Value, addExternalUserToStep.PlanId, addExternalUserToStep.Step);

                if (result)
                {
                    Response.StatusCode = StatusCodes.Status201Created;
                }
                else
                {
                    ModelState.AddModelError(string.Empty, sharedResource.userAddExistingExternalUserToStepProblem);
                }
            }

            return(PartialView("~/Views/User/Partials/_AddExistingUser.cshtml"));
        }
        public IActionResult AddNewExternalUserToStep(AddResponsibleUserToStepDTO addExternalUserToStep)
        {
            Response.StatusCode = StatusCodes.Status202Accepted;

            if (string.IsNullOrEmpty(addExternalUserToStep.Step) && addExternalUserToStep.PlanId <= 0)
            {
                Response.StatusCode = StatusCodes.Status400BadRequest;

                return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
            }

            var newExternaluser = addExternalUserToStep.NewResponsibleUser;

            if (TryValidateModel(newExternaluser))
            {
                if (_userRepository.FindByCondition(u => u.Email == newExternaluser.Email).Any())
                {
                    ModelState.AddModelError("NewUser.Email", sharedResource.userAddNewExternalUserToStepEmailAlreadyExist);

                    return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
                }
                var newUser = new NewUserDTO
                {
                    Email     = newExternaluser.Email,
                    FirstName = newExternaluser.FirstName,
                    LastName  = newExternaluser.LastName
                };

                newUser.Password = _userRepository.GeneratePassword();
                newUser.Role     = Roles.External;
                var user = _userRepository.AddNew(newUser, HttpContext.GetUserId());

                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, sharedResource.userAddNewExternalUserToStepFailed);

                    return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
                }

                if (!_emailService.SendPasswordToUser(newUser.Password, user))
                {
                    ModelState.AddModelError(string.Empty, sharedResource.userAddNewExternalUserToStepEmailNotSent);

                    return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
                }

                if (!_planRepository.AddUserToPlanStep(user.Id, addExternalUserToStep.PlanId, addExternalUserToStep.Step))
                {
                    ModelState.AddModelError(string.Empty, sharedResource.userAddNewExternalUserToStepNotAddedToteam);

                    return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
                }

                Response.StatusCode = StatusCodes.Status201Created;
            }

            return(PartialView("~/Views/User/Partials/_AddNewUser.cshtml"));
        }