コード例 #1
0
        protected override void Seed(StoredObjects.ApplicationContext context)
        {
            var theStartDate = new DateTime(2016, 11, 6, 9, 51, 0, DateTimeKind.Utc);

            var mainOrganisation = new ShurahBasedOrganisation
            {
                Name                              = "ShariahStandards.org",
                Description                       = "For all Muslims who have an interest in developing a global open standard interpretation of Islamic law in English",
                JoiningPolicy                     = JoiningPolicy.NoApplicationNeeded,
                LastUpdateDateTimeUtc             = theStartDate,
                UrlDomain                         = "https://shariahstandards.org",
                RequiredNumbersOfAcceptingMembers = 1
            };

            context.Set <ShurahBasedOrganisation>().AddOrUpdate(x => x.Name, mainOrganisation);

            context.SaveChanges();

            mainOrganisation = context.Set <ShurahBasedOrganisation>().First(x => x.Name == mainOrganisation.Name);
            var member = new Member
            {
                Introduction           = "For some explanations of my views you can visit my personal blog http://investigatingIslam.org ",
                JoinedOnDateAndTimeUtc = theStartDate,
                Moderated      = false,
                Removed        = false,
                Organisation   = mainOrganisation,
                OrganisationId = mainOrganisation.Id,
                LastDateAndTimeUtcAgreedToMembershipRules = theStartDate,
                PublicName   = "Lamaan Ball",
                EmailAddress = "*****@*****.**"
            };

            context.Set <Member>().AddOrUpdate(x => x.EmailAddress, member);

            context.SaveChanges();

            member = context.Set <Member>().First(x => x.PublicName == "Lamaan Ball");
            var user = new Auth0User {
                Id = "facebook|10154497931532170", Name = "Lamaan Ball", PictureUrl = "https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/1959327_10152239153037170_2068892341_n.jpg?oh=9197c2274a8a0b7c3f548ca6407da74e&oe=5884F154"
            };

            context.Set <Auth0User>().AddOrUpdate(x => x.Id, user);
            context.SaveChanges();
            var memberAuthUser = new MemberAuth0User
            {
                Auth0UserId = user.Id,
                MemberId    = member.Id
            };

            context.Set <MemberAuth0User>().AddOrUpdate(x => new { x.Auth0UserId, x.MemberId }, memberAuthUser);
            context.SaveChanges();

            context.Set <OrganisationLeader>().AddOrUpdate(x => x.OrganisationId, new OrganisationLeader
            {
                LastUpdateDateTimeUtc = DateTime.UtcNow,
                Leader         = member,
                Organisation   = mainOrganisation,
                OrganisationId = mainOrganisation.Id,
                LeaderMemberId = member.Id
            });
            context.SaveChanges();
            // context.Database.ExecuteSqlCommand("ALTER TABLE Roots ALTER COLUMN [Transliteration] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL");
        }
コード例 #2
0
        public void EnsureSeedDataPresent()
        {
            var theStartDate = new DateTime(2016, 11, 6, 9, 51, 0, DateTimeKind.Utc);

            var mainOrganisation = new ShurahBasedOrganisation
            {
                Name                              = "ShariahStandards.org",
                Description                       = "For all Muslims who have an interest in developing a global open standard interpretation of Islamic law in English",
                JoiningPolicy                     = JoiningPolicy.NoApplicationNeeded,
                LastUpdateDateTimeUtc             = theStartDate,
                UrlDomain                         = "https://shariahstandards.org",
                RequiredNumbersOfAcceptingMembers = 1
            };
            var existingMainOrganisation = _context.Set <ShurahBasedOrganisation>().FirstOrDefault(x => x.Name == mainOrganisation.Name);

            if (existingMainOrganisation == null)
            {
                _context.Set <ShurahBasedOrganisation>().Add(mainOrganisation);
                _context.SaveChanges();
            }
            existingMainOrganisation = _context.Set <ShurahBasedOrganisation>().FirstOrDefault(x => x.Name == mainOrganisation.Name);

            var member = new Member
            {
                Introduction           = "For some explanations of my views you can visit my personal blog http://investigatingIslam.org ",
                JoinedOnDateAndTimeUtc = theStartDate,
                Moderated      = false,
                Removed        = false,
                Organisation   = existingMainOrganisation,
                OrganisationId = existingMainOrganisation.Id,
                LastDateAndTimeUtcAgreedToMembershipRules = theStartDate,
                PublicName   = "Lamaan Ball",
                EmailAddress = "*****@*****.**"
            };
            var existingMember = _context.Set <Member>().FirstOrDefault(x => x.EmailAddress == "*****@*****.**");

            if (existingMember == null)
            {
                _context.Set <Member>().Add(member);
                _context.SaveChanges();
            }
            existingMember = _context.Set <Member>().FirstOrDefault(x => x.EmailAddress == "*****@*****.**");

            var user = new Auth0User {
                Id = "facebook|10154497931532170", Name = "Lamaan Ball", PictureUrl = "https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/1959327_10152239153037170_2068892341_n.jpg?oh=9197c2274a8a0b7c3f548ca6407da74e&oe=5884F154"
            };

            var existingUser = _context.Set <Auth0User>().FirstOrDefault(x => x.Id == user.Id);

            if (existingUser == null)
            {
                _context.Set <Auth0User>().Add(user);
                _context.SaveChanges();
            }
            existingUser = _context.Set <Auth0User>().FirstOrDefault(x => x.Id == user.Id);

            var memberAuthUser = new MemberAuth0User
            {
                Auth0UserId = existingUser.Id,
                MemberId    = existingMember.Id
            };
            var existingMemberAuth0User = _context.Set <MemberAuth0User>().FirstOrDefault(x => x.MemberId == existingMember.Id &&
                                                                                          x.Auth0UserId == existingUser.Id);

            if (existingMemberAuth0User == null)
            {
                _context.Set <MemberAuth0User>().Add(memberAuthUser);
                _context.SaveChanges();
            }
            existingMemberAuth0User = _context.Set <MemberAuth0User>().FirstOrDefault
                                          (x => x.MemberId == existingMember.Id && x.Auth0UserId == existingUser.Id);

            var existingOrganisationLeader = existingMainOrganisation.OrganisationLeader;

            if (existingOrganisationLeader == null)
            {
                _context.Set <OrganisationLeader>().Add(new OrganisationLeader
                {
                    LastUpdateDateTimeUtc = DateTime.UtcNow,
                    Leader         = existingMember,
                    Organisation   = existingMainOrganisation,
                    OrganisationId = existingMainOrganisation.Id,
                    LeaderMemberId = existingMember.Id
                });
                _context.SaveChanges();
            }
        }
コード例 #3
0
        public virtual ResponseResource AcceptMembershipApplication(IPrincipal principal, MembershipApplicationAcceptanceRequest request)
        {
            var user        = _dependencies.UserService.GetGuaranteedAuthenticatedUser(principal);
            var application =
                _dependencies.StorageService.SetOf <MembershipApplication>().SingleOrDefault(x => x.Id == request.Id);

            if (application == null)
            {
                return(new ResponseResource {
                    HasError = true, Error = "Application not found."
                });
            }
            _dependencies.OrganisationService.GuaranteeUserHasPermission(user, application.Organisation, ShurahOrganisationPermission.AcceptMembershipApplication);
            var currentMember      = _dependencies.OrganisationService.GetGuaranteedMember(principal, application.OrganisationId);
            var existingAcceptance = application.Acceptances.SingleOrDefault(x => x.AcceptingMemberId == currentMember.Id);

            if (existingAcceptance != null)
            {
                return(new ResponseResource {
                    HasError = true, Error = "You have already accepted this application."
                });
            }
            var acceptance = new MembershipApplicationAcceptance();

            acceptance.AcceptingMemberId       = currentMember.Id;
            acceptance.AcceptanceDateTimeUtc   = DateTime.UtcNow;
            acceptance.AcceptingMember         = currentMember;
            acceptance.MembershipApplication   = application;
            acceptance.MembershipApplicationId = application.Id;
            _dependencies.StorageService.SetOf <MembershipApplicationAcceptance>().Add(acceptance);
            _dependencies.StorageService.SaveChanges();

            var acceptancesCount = application.Acceptances.Count(x => !x.AcceptingMember.Removed);

            if (acceptancesCount >= application.Organisation.RequiredNumbersOfAcceptingMembers)
            {
                var existingMembership = application.Organisation.Members.FirstOrDefault(
                    m => m.MemberAuth0Users.Any(a => a.Auth0UserId == application.Auth0UserId));
                if (existingMembership == null)
                {
                    existingMembership = new Member();
                    _dependencies.StorageService.SetOf <Member>().Add(existingMembership);
                }
                existingMembership.OrganisationId         = application.OrganisationId;
                existingMembership.PublicName             = application.PublicName;
                existingMembership.EmailAddress           = application.Email;
                existingMembership.Introduction           = "";
                existingMembership.JoinedOnDateAndTimeUtc = DateTime.UtcNow;
                existingMembership.LastDateAndTimeUtcAgreedToMembershipRules = DateTime.UtcNow;
                existingMembership.Organisation = application.Organisation;
                existingMembership.Removed      = false;
                _dependencies.StorageService.SaveChanges();

                var existingMemberAuth0User =
                    _dependencies.StorageService.SetOf <MemberAuth0User>()
                    .SingleOrDefault(
                        x =>
                        x.Auth0UserId == acceptance.MembershipApplication.Auth0UserId &&
                        x.MemberId == existingMembership.Id);
                if (existingMemberAuth0User == null)
                {
                    existingMemberAuth0User             = new MemberAuth0User();
                    existingMemberAuth0User.Auth0UserId = acceptance.MembershipApplication.Auth0UserId;
                    existingMemberAuth0User.Auth0User   = acceptance.MembershipApplication.Auth0User;
                    existingMemberAuth0User.MemberId    = existingMembership.Id;
                    existingMemberAuth0User.Member      = existingMembership;
                    _dependencies.StorageService.SetOf <MemberAuth0User>().Add(existingMemberAuth0User);
                }
                existingMemberAuth0User.Suspended = false;
                _dependencies.StorageService.SaveChanges();
            }

            return(new ResponseResource());
        }