public string AppointUserAsAdmin(CompanyTreatmentUsersModel model)
        {
            _subscriptionService.CheckSubscription(model.CompanyId);
            var repoComp = _contextManager.CreateRepositiry <ICompanyRepo>();
            var company  = repoComp.GetById(model.CompanyId);

            if (company == null)
            {
                throw new ValidationException("Company not found.");
            }

            var userError = "Something wrong with this email(s):";

            foreach (string email in model.Email)
            {
                var repoUser = _contextManager.CreateRepositiry <IUserRepo>();
                var user     = repoUser.GetUserByEmail(email);
                if (!(user == null))
                {
                    var repo        = _contextManager.CreateRepositiry <ICompanyUserLinkRepo>();
                    var companyUser = repo.GetRecordByCompanyAndUser(user.Id, model.CompanyId);

                    if (!(companyUser == null))
                    {
                        companyUser.UserCompanyRole = (int)Model.Enums.CompanyUserRoleEnum.Admin;
                        _contextManager.Save();

                        var generateEmail = new GenerateEmailDto
                        {
                            UrlAdress     = _urlAdress + "/company/" + model.CompanyId + "?",
                            EmailMainText = "Congratulations, you are Admin of " + company.Name + "! Now you can invite people to the company and create events.",
                            ObjectId      = model.CompanyId,
                            Subject       = "Company"
                        };
                        var emailModel = _generateEmailWrapper.GenerateEmail(generateEmail, user);
                        _emailWrapper.SendEmail(emailModel);
                    }
                    else
                    {
                        userError = userError + " " + email;
                    }
                }
                else
                {
                    userError = userError + " " + email;
                }
            }
            if (userError == "Something wrong with this email:")
            {
                return("Users are successfully assigned");
            }
            else
            {
                return(userError);
            }
        }
 public IActionResult AppointUserAsAdmin(CompanyTreatmentUsersModel model)
 {
     try
     {
         var result = _service.AppointUserAsAdmin(model);
         return(Ok(result));
     }
     catch (ValidationException ex)
     {
         return(BadRequest(ex.Message));
     }
 }
 public IActionResult InviteEmail(CompanyTreatmentUsersModel model)
 {
     try
     {
         _service.InviteUsersToCompany(model);
         return(Ok("Link to join the company is sent to emails"));
     }
     catch (ValidationException ex)
     {
         return(BadRequest(ex.Message));
     }
 }
        public void InviteUsersToCompany(CompanyTreatmentUsersModel model)
        {
            _subscriptionService.CheckSubscription(model.CompanyId);
            var repo    = _contextManager.CreateRepositiry <ICompanyRepo>();
            var company = repo.GetById(model.CompanyId);

            if (company == null)
            {
                throw new ValidationException("Company not found.");
            }

            var generateEmail = new GenerateEmailDto
            {
                UrlAdress     = _urlAdress + "/company/" + model.CompanyId + "?",
                EmailMainText = "Invitation to the company, for confirmation follow the link",
                ObjectId      = model.CompanyId,
                Subject       = "Welcome to the Company"
            };

            foreach (string email in model.Email)
            {
                EmailFunctionality(email, model.CompanyId, generateEmail);
            }
        }