Example #1
0
        public virtual ActionResult RegisterWithOrganization(Guid?registrationToken)
        {
            if (registrationToken == null)
            {
                return(View(MVC.Account.Views.InvalidOrgRegistrationTokenView));
            }

            // Retrieve the organization based on the token
            var org = _serviceFactory.GetService <OrganizationByRegistrationTokenQuery>()
                      .Execute(new OrganizationByRegistrationTokenQueryParams {
                RegistrationToken = (Guid)registrationToken
            });

            if (org == null)
            {
                return(View(MVC.Account.Views.InvalidOrgRegistrationTokenView));
            }

            var model = new OrganizationRegistrationViewModel
            {
                RegistrationToken = (Guid)registrationToken,
                MinPasswordLength = Membership.MinRequiredPasswordLength,
                OrganizationName  = org.Name
            };

            if (org.EmailDomains.Count > 0)
            {
                model.RestrictedEmailDomain = org.EmailDomains.First().Domain;
            }

            return(View(model));
        }
Example #2
0
        public virtual ActionResult RegisterWithOrganization(OrganizationRegistrationViewModel model)
        {
            if (ModelState.IsValid)
            {
                MembershipCreateStatus createStatus;

                // Attempt to register the user
                try
                {
                    createStatus = MembershipService.CreateUser(new CreateUserMembershipParams
                    {
                        Email    = model.Email,
                        Password = model.Password,
                        OrganizationRegistrationToken = model.RegistrationToken,
                        FullName = model.FullName
                    });

                    if (createStatus == MembershipCreateStatus.Success)
                    {
                        FormsService.SignIn(model.Email, false /* createPersistentCookie */);
                        return(RedirectToAction(MVC.Home.Index()));
                    }
                    else
                    {
                        ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
                    }
                }
                catch (InvalidEmailDomainForOrganizationException)
                {
                    ModelState.AddModelError("", "The entered email address is not allowed for this organization");
                }
            }

            // If we got this far, something failed, redisplay form

            // Retrieve the organization based on the token
            var org = _serviceFactory.GetService <OrganizationByRegistrationTokenQuery>()
                      .Execute(new OrganizationByRegistrationTokenQueryParams {
                RegistrationToken = model.RegistrationToken
            });

            if (org.EmailDomains.Count > 0)
            {
                model.RestrictedEmailDomain = org.EmailDomains.First().Domain;
            }

            model.MinPasswordLength = Membership.MinRequiredPasswordLength;
            return(View(model));
        }
Example #3
0
        public void RegisterOrganizationController_SetupService_CreatedItem()
        {
            var registerServiceMock = new Mock <IOrganizationRegistrationService>();

            var organizationToCreate = new OrganizationRegistrationViewModel
            {
                Name               = "Helpful",
                Description        = "Volunteers organization",
                AdministratorLogin = "******",
                City               = "Lviv",
                Country            = "Ukraine",
                Street             = "Pasichna",
                House              = "24a",
                NameError          = string.Empty,
                UserError          = string.Empty
            };

            registerServiceMock.Setup(o => o.RegisterOrganization(organizationToCreate)).
            Returns(new OrganizationRegistrationViewModel {
                Name               = "Helpful",
                Description        = "Volunteers organization",
                AdministratorLogin = "******",
                City               = "Lviv",
                Country            = "Ukraine",
                Street             = "Pasichna",
                House              = "24a",
                NameError          = string.Empty,
                UserError          = string.Empty
            });

            var controller = new OrganizationRegistrationController(registerServiceMock.Object);

            var result = controller.RegisterNewOrganization(organizationToCreate);

            Assert.NotNull(result);
        }
Example #4
0
 public OrganizationRegistrationViewModel RegisterNewOrganization([FromBody] OrganizationRegistrationViewModel item)
 {
     return(_orgRegisterService.RegisterOrganization(item));
 }
Example #5
0
        /// <summary>
        /// Registers new organization
        /// </summary>
        /// <param name="item"> Item to register </param>
        /// <returns>Registered item</returns>
        public OrganizationRegistrationViewModel RegisterOrganization(OrganizationRegistrationViewModel item)
        {
            var checkOrganization = _unitOfWork.OrganizationRepository.Read().Where(o => o.Name == item.Name).FirstOrDefault();

            if (checkOrganization == null)
            {
                var user = _unitOfWork.UsersRepository.GetUser(item.AdministratorLogin);
                if (user != null)
                {
                    var role            = _unitOfWork.RoleRepository.Read().Where(r => r.Name == "admin").FirstOrDefault();
                    var checkMembership = _unitOfWork.MembershipRepository.Read().Where(m => (m.UserId == user.Id) && (m.RoleId == role.Id)).FirstOrDefault();
                    if (checkMembership == null)
                    {
                        var organization = new Organization {
                            Name = item.Name, Description = item.Description
                        };
                        _unitOfWork.OrganizationRepository.Create(organization);
                        _unitOfWork.SaveChanges();

                        var membership = new Membership {
                            UserId = user.Id, OrgId = organization.Id, RoleId = role.Id
                        };
                        _unitOfWork.MembershipRepository.Create(membership);
                        _unitOfWork.SaveChanges();

                        var address = new Address {
                            City = item.City, Street = item.Street, Country = item.Country, Building = item.House
                        };
                        _unitOfWork.AddressRepository.Create(address);
                        _unitOfWork.SaveChanges();

                        var orgAddres = new OrgAddress {
                            OrgId = organization.Id, AddressId = address.Id
                        };
                        _unitOfWork.OrganizationAddressRepository.Create(orgAddres);
                        _unitOfWork.SaveChanges();

                        organization.OrgAddresses.Add(orgAddres);
                        _unitOfWork.SaveChanges();

                        var result = new OrganizationRegistrationViewModel
                        {
                            Name = organization.Name,
                            AdministratorLogin = item.AdministratorLogin,
                            City        = address.City,
                            Country     = address.Country,
                            Street      = address.Street,
                            Description = organization.Description,
                            House       = address.Building
                        };
                        return(result);
                    }
                    else
                    {
                        item.UserError = "Цей користувач вже адмініструє організацію";
                        return(item);
                    }
                }
                item.UserError = "Користувача з таким логіном не зареєстровано";
                return(item);
            }
            item.NameError = "Організація з такою назвою вже існує";
            return(item);
        }
        /// <summary>
        /// Registers new organization
        /// </summary>
        /// <param name="item"> Item to register </param>
        /// <returns>Registered item</returns>
        public OrganizationRegistrationViewModel RegisterOrganization(OrganizationRegistrationViewModel item)
        {
            var checkOrganization = _unitOfWork.OrganizationRepository.Read().Where(o => o.Name == item.Name).FirstOrDefault();

            if (checkOrganization == null)
            {
                var user = _unitOfWork.UsersRepository.GetUser(item.AdministratorLogin);
                if (user != null)
                {
                    var role            = _unitOfWork.RoleRepository.Read().Where(r => r.Name == "admin").FirstOrDefault();
                    var checkMembership = _unitOfWork.MembershipRepository.Read().Where(m => (m.UserId == user.Id) && (m.RoleId == role.Id)).FirstOrDefault();
                    if (checkMembership == null)
                    {
                        var t = _imgManageService.UploadImageAsync(Convert.FromBase64String(item.LogoBase64Code), item.LogoImageExtension);
                        Task.WhenAll(t);
                        var organization = new Organization {
                            Name = item.Name, Description = item.Description, LogoUrl = t.Result
                        };

                        _unitOfWork.OrganizationRepository.Create(organization);

                        var membership = new Membership {
                            UserId = user.Id, OrgId = organization.Id, RoleId = role.Id
                        };
                        _unitOfWork.MembershipRepository.Create(membership);

                        var address = new Address {
                            City = item.City, Street = item.Street, Country = item.Country, Building = item.House
                        };
                        _unitOfWork.AddressRepository.Create(address);

                        var orgAddres = new OrgAddress {
                            OrgId = organization.Id, AddressId = address.Id
                        };
                        _unitOfWork.OrganizationAddressRepository.Create(orgAddres);
                        organization.OrgAddresses.Add(orgAddres);

                        var interval = new AutoImportIntervals {
                            OrgId = organization.Id, Interval = Constants.DefaultImportInterval, LastUpdateDate = DateTime.Now
                        };
                        _unitOfWork.ImportIntervalRepository.Create(interval);
                        _unitOfWork.SaveChanges();

                        var result = new OrganizationRegistrationViewModel
                        {
                            Name = organization.Name,
                            AdministratorLogin = item.AdministratorLogin,
                            City        = address.City,
                            Country     = address.Country,
                            Street      = address.Street,
                            Description = organization.Description,
                            House       = address.Building
                        };
                        return(result);
                    }
                    else
                    {
                        item.UserError = "Цей користувач вже адмініструє організацію";
                        return(item);
                    }
                }
                item.UserError = "Користувача з таким логіном не зареєстровано";
                return(item);
            }
            item.NameError = "Організація з такою назвою вже існує";
            return(item);
        }