public void RespondToRequest(long requestID, string status) { var request = _context.Requests.FirstOrDefault(r => r.RequestId == requestID); request.Status = status; _context.Requests.Update(request); var SenderAccount = _context.Accounts.Include(a => a.Circle).FirstOrDefault(s => request.SenderId == s.AccountId); var RecipientAccount = _context.Accounts.Include(a => a.Circle).FirstOrDefault(rec => request.RecepientId == rec.AccountId); if (request.Status == "Accepted") { var SenderCircleMember = new CircleMember { CircleId = RecipientAccount.Circle.CircleId, AccountId = SenderAccount.AccountId }; var RecipientCircleMember = new CircleMember { CircleId = SenderAccount.Circle.CircleId, AccountId = RecipientAccount.AccountId }; _context.Add(SenderCircleMember); _context.Add(RecipientCircleMember); } _context.SaveChanges(); }
public Circle AddCircle(Circle circleToAdd) { var sql1 = @" insert into [MessageBoard](BoardName, BoardDescription) output inserted.* values(@BoardName, @BoardDescription); "; var sql2 = @" insert into [Circle](UserId, CircleName, CircleDescription, BoardId) output inserted.* values(@UserId, @CircleName, @CircleDescription, @BoardId) "; using (var db = new SqlConnection(connectionString)) { var parameters1 = new { BoardName = circleToAdd.CircleName, BoardDescription = circleToAdd.CircleDescription }; var result1 = db.QueryFirstOrDefault <MessageBoard>(sql1, parameters1); var parameters2 = new { UserId = circleToAdd.UserId, CircleName = circleToAdd.CircleName, CircleDescription = circleToAdd.CircleDescription, BoardId = result1.MessageBoardId }; var result2 = db.QueryFirstOrDefault <Circle>(sql2, parameters2); var newMember = new CircleMember { UserId = circleToAdd.UserId, CircleId = result2.CircleId }; AddMember(newMember); return(result2); } }
private void Seed() { using (var context = new InnerCircleDataContext(ContextOptions)) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); // Create 3 accounts for (int i = 0; i < 3; i++) { var account1 = new Account { Email = new Email { Value = $"Account{i}@email.com", }, Username = new Username { Value = $"Account{i}Username" }, Password = new Password { Value = "Password" } }; context.Add(account1); } context.SaveChanges(); // Make accounts 1 and 2 members of circle var CircleMember = new CircleMember() { CircleId = 1, AccountId = 2 }; var CircleMember2 = new CircleMember() { CircleId = 2, AccountId = 2 }; context.Add(CircleMember2); context.Add(CircleMember); context.SaveChanges(); for (int i = 0; i < 3; i++) { var post = new Post() { AccountId = 3, Description = $"Post number {i} ", MediaUrl = $"url{i}", Username = $"Account3Username" }; context.Add(post); context.SaveChanges(); } } }
public async Task <ActionResult> ApproveCircleRequest([FromBody] CircleRequest model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var loggedInUser = await GetLoggedInUserAsync(); if (loggedInUser == null) { return(Unauthorized()); } if (!await _repo.IsOwner(loggedInUser.Id, model.CircleId)) { return(Unauthorized()); } var circleRequestFromRepo = await _repo.GetCircleRequest((int)model.AppUserId, model.CircleId); if (circleRequestFromRepo == null) { return(NotFound("リクエストが見つかりません")); } _repo.Delete(circleRequestFromRepo); //If already member, just remove request and create nothing if (await _repo.IsMember(model.AppUserId, model.CircleId)) { await _repo.SaveAll(); return(Ok()); } var newCircleMember = new CircleMember() { AppUserId = (int)model.AppUserId, Circle = circleRequestFromRepo.Circle, CircleId = model.CircleId, Role = CircleRoleEnum.MEMBER, DateJoined = DateTime.Now, DateLastActive = DateTime.Now }; _repo.Add(newCircleMember); await _repo.SaveAll(); await _notificationRepo.AddNotification(NotificationEnum.CircleRequestAccepted, model.AppUserId, newCircleMember); await _repo.SaveAll(); return(CreatedAtRoute("GetCircleMember", new { userId = model.AppUserId, circleId = model.CircleId }, _mapper.Map <CircleMemberForReturnDto>(await _repo.GetCircleMember(model.AppUserId, model.CircleId)))); }
public CircleMember AddMember(CircleMember circleMemberToAdd) { var sql = @" insert into [CircleMember](UserId, CircleId) output inserted.* values(@UserId,@CircleId); "; using (var db = new SqlConnection(connectionString)) { var parameters = new { UserId = circleMemberToAdd.UserId, CircleId = circleMemberToAdd.CircleId }; var result = db.QueryFirstOrDefault <CircleMember>(sql, parameters); return(result); } }
private async Task AddCircleRequestAcceptedNotification(int appUserId, CircleMember circleMember) { // var circleMember = record as CircleMember; if (circleMember == null) { return; } await AddNotificationIfNotExist(new Notification() { AppUserId = (int)circleMember.AppUserId, NotificationType = NotificationEnum.CircleRequestAccepted, RecordType = "Circle", RecordId = circleMember.CircleId, TargetRecordTitle = circleMember.Circle.Name, // Message = "コミュニティ『" + circleMember.Circle.Name + "』への参加が承認されました" }); }
private void DeleteMemberAsync(Contact contact, ServiceName serviceName, RoleLists list, DeleteMemberCompletedEventHandler callback) { if (NSMessageHandler.MSNTicket == MSNTicket.Empty || AddressBook == null) { OnServiceOperationFailed(this, new ServiceOperationFailedEventArgs("DeleteMember", new MSNPSharpException("You don't have access right on this action anymore."))); return; } // check whether the update is necessary if (!contact.HasLists(list)) { return; } RoleId memberRole = ContactList.GetMemberRole(list); if (memberRole == RoleId.None) { return; } Service service = AddressBook.SelectTargetService(serviceName); if (service == null) { AddServiceAsync(serviceName, delegate { // RESURSIVE CALL DeleteMemberAsync(contact, serviceName, list, callback); }); return; } DeleteMemberRequestType deleteMemberRequest = new DeleteMemberRequestType(); deleteMemberRequest.serviceHandle = new HandleType(); deleteMemberRequest.serviceHandle.Id = service.Id.ToString(); deleteMemberRequest.serviceHandle.Type = serviceName; Membership memberShip = new Membership(); memberShip.MemberRole = memberRole; BaseMember deleteMember = null; // BaseMember is an abstract type, so we cannot create a new instance. // If we have a MembershipId different from 0, just use it. Otherwise, use email or phone number. BaseMember baseMember = AddressBook.SelectBaseMember(serviceName, contact.Account, contact.ClientType, memberRole); int membershipId = (baseMember == null) ? 0 : baseMember.MembershipId; switch (contact.ClientType) { case IMAddressInfoType.WindowsLive: deleteMember = new PassportMember(); deleteMember.Type = (baseMember == null) ? MembershipType.Passport : baseMember.Type; deleteMember.State = (baseMember == null) ? MemberState.Accepted : baseMember.State; if (membershipId == 0) { (deleteMember as PassportMember).PassportName = contact.Account; } else { deleteMember.MembershipId = membershipId; deleteMember.MembershipIdSpecified = true; } break; case IMAddressInfoType.Yahoo: case IMAddressInfoType.OfficeCommunicator: deleteMember = new EmailMember(); deleteMember.Type = MembershipType.Email; deleteMember.State = (baseMember == null) ? MemberState.Accepted : baseMember.State; if (membershipId == 0) { (deleteMember as EmailMember).Email = contact.Account; } else { deleteMember.MembershipId = membershipId; deleteMember.MembershipIdSpecified = true; } break; case IMAddressInfoType.Telephone: deleteMember = new PhoneMember(); deleteMember.Type = MembershipType.Phone; deleteMember.State = (baseMember == null) ? MemberState.Accepted : baseMember.State; if (membershipId == 0) { (deleteMember as PhoneMember).PhoneNumber = contact.Account; } else { deleteMember.MembershipId = membershipId; deleteMember.MembershipIdSpecified = true; } break; case IMAddressInfoType.Circle: deleteMember = new CircleMember(); deleteMember.Type = MembershipType.Circle; deleteMember.State = (baseMember == null) ? MemberState.Accepted : baseMember.State; (deleteMember as CircleMember).CircleId = contact.AddressBookId.ToString("D").ToLowerInvariant(); break; } memberShip.Members = new BaseMember[] { deleteMember }; deleteMemberRequest.memberships = new Membership[] { memberShip }; MsnServiceState DeleteMemberObject = new MsnServiceState(PartnerScenario.ContactMsgrAPI, "DeleteMember", true); SharingServiceBinding sharingService = (SharingServiceBinding)CreateService(MsnServiceType.Sharing, DeleteMemberObject); sharingService.DeleteMemberCompleted += delegate(object srv, DeleteMemberCompletedEventArgs e) { OnAfterCompleted(new ServiceOperationEventArgs(sharingService, MsnServiceType.Sharing, e)); if (e.Cancelled || NSMessageHandler.MSNTicket == MSNTicket.Empty) { return; } // Update AB AddressBook.RemoveMemberhip(serviceName, contact.Account, contact.ClientType, memberRole); if (callback != null) { callback(srv, e); } }; RunAsyncMethod(new BeforeRunAsyncMethodEventArgs(sharingService, MsnServiceType.Sharing, DeleteMemberObject, deleteMemberRequest)); }
private void AddMemberAsync(Contact contact, ServiceName serviceName, RoleLists list, AddMemberCompletedEventHandler callback) { if (NSMessageHandler.MSNTicket == MSNTicket.Empty || AddressBook == null) { OnServiceOperationFailed(this, new ServiceOperationFailedEventArgs("AddMember", new MSNPSharpException("You don't have access right on this action anymore."))); return; } // check whether the update is necessary if (contact.HasLists(list)) { return; } RoleId memberRole = ContactList.GetMemberRole(list); if (memberRole == RoleId.None) { return; } Service service = AddressBook.SelectTargetService(serviceName); if (service == null) { AddServiceAsync(serviceName, delegate { // RESURSIVE CALL AddMemberAsync(contact, serviceName, list, callback); }); return; } AddMemberRequestType addMemberRequest = new AddMemberRequestType(); addMemberRequest.serviceHandle = new HandleType(); addMemberRequest.serviceHandle.Id = service.Id.ToString(); addMemberRequest.serviceHandle.Type = serviceName; Membership memberShip = new Membership(); memberShip.MemberRole = memberRole; BaseMember member = null; // Abstract if (contact.ClientType == IMAddressInfoType.WindowsLive) { member = new PassportMember(); PassportMember passportMember = member as PassportMember; passportMember.PassportName = contact.Account; passportMember.State = MemberState.Accepted; passportMember.Type = MembershipType.Passport; } else if (contact.ClientType == IMAddressInfoType.Yahoo || contact.ClientType == IMAddressInfoType.OfficeCommunicator) { member = new EmailMember(); EmailMember emailMember = member as EmailMember; emailMember.State = MemberState.Accepted; emailMember.Type = MembershipType.Email; emailMember.Email = contact.Account; emailMember.Annotations = new Annotation[] { new Annotation() }; emailMember.Annotations[0].Name = AnnotationNames.MSN_IM_BuddyType; emailMember.Annotations[0].Value = (contact.ClientType == IMAddressInfoType.Yahoo) ? "32:" : "02:"; } else if (contact.ClientType == IMAddressInfoType.Telephone) { member = new PhoneMember(); PhoneMember phoneMember = member as PhoneMember; phoneMember.State = MemberState.Accepted; phoneMember.Type = MembershipType.Phone; phoneMember.PhoneNumber = contact.Account; } else if (contact.ClientType == IMAddressInfoType.Circle) { member = new CircleMember(); CircleMember circleMember = member as CircleMember; circleMember.Type = MembershipType.Circle; circleMember.State = MemberState.Accepted; circleMember.CircleId = contact.AddressBookId.ToString("D").ToLowerInvariant(); } if (member == null) { return; } memberShip.Members = new BaseMember[] { member }; addMemberRequest.memberships = new Membership[] { memberShip }; MsnServiceState AddMemberObject = new MsnServiceState(PartnerScenario.ContactMsgrAPI, "AddMember", true); SharingServiceBinding sharingService = (SharingServiceBinding)CreateService(MsnServiceType.Sharing, AddMemberObject); sharingService.AddMemberCompleted += delegate(object srv, AddMemberCompletedEventArgs e) { OnAfterCompleted(new ServiceOperationEventArgs(sharingService, MsnServiceType.Sharing, e)); if (e.Cancelled || NSMessageHandler.MSNTicket == MSNTicket.Empty) { return; } // Update AB AddressBook.AddMemberhip(serviceName, contact.Account, contact.ClientType, memberRole, member); if (callback != null) { callback(srv, e); } }; RunAsyncMethod(new BeforeRunAsyncMethodEventArgs(sharingService, MsnServiceType.Sharing, AddMemberObject, addMemberRequest)); }
public IActionResult AddNewMemberToCircle(CircleMember circleMemberToAdd) { var member = _circlesRepository.AddMember(circleMemberToAdd); return(Created("", member)); }
/// <summary> /// 建立成員角色資訊 /// </summary> /// <param name="account"></param> /// <param name="circleKey"></param> /// <param name="token"></param> /// <returns></returns> public bool InsertMutipleCircleMemberRole(CircleMemberRoleRequest data) { var db = _uow.DbContext; var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(data.Token).Result; if (tokenInfo == null) { return(false); } var learningCircleInfo = db.LearningCircle.FirstOrDefault(t => t.LearningOuterKey == data.CircleKey); if (learningCircleInfo == null) { return(false); } foreach (var account in data.Accounts) { var memberService = new MemberService(); var memberInfo = memberService.AccountToMember(account.ToLower(), learningCircleInfo.OrgId.Value); if (memberInfo == null) { return(false); } //判斷是否已存在關聯 var checkData = GetCircleMemberRoleInfo(memberInfo.Id, learningCircleInfo.Id, data.RoleId.Value); //已存在就不新增 if (checkData != null) { continue; } var entity = new Infrastructure.Entity.CircleMemberRoleplay() { Enable = true, CircleId = learningCircleInfo.Id, MemberId = memberInfo.Id, RoleId = data.RoleId.Value }; var circlememberEntity = new CircleMember() { MemberId = memberInfo.Id, CircleId = learningCircleInfo.Id, Enabled = true, Created = TimeData.Create(DateTime.UtcNow), Deleted = TimeData.Create(null), Updated = TimeData.Create(null), CreateUser = tokenInfo.MemberId }; db.CircleMemberRoleplay.Add(entity); db.CircleMember.Add(circlememberEntity); } db.SaveChanges(); return(true); }
/// <summary> /// 根據InviteCode 建立成員角色資訊 - 邀請碼加入 /// </summary> /// <param name="requestData"></param> /// <returns></returns> public InviteResponseData InsertCircleMemberRoleByInvite(CircleMemberRoleRequest requestData) { var db = _uow.DbContext; var inviteData = db.MemberInvite.FirstOrDefault(t => t.Code.ToLower() == requestData.InviteCode.ToLower()); var responseData = new InviteResponseData() { InviteStatus = InviteStatusEnum.inviteError }; if (inviteData == null) { return(responseData); } var learningCircleInfo = db.LearningCircle.FirstOrDefault(t => t.LearningOuterKey == inviteData.CircleKey.ToLower()); if (learningCircleInfo == null || learningCircleInfo.InviteEnable == false || learningCircleInfo.Enable == false) { responseData.InviteStatus = InviteStatusEnum.EndInvite; return(responseData); } responseData.CircleName = learningCircleInfo.Name; if (inviteData.Enable == false) { responseData.InviteStatus = InviteStatusEnum.inviteError; return(responseData); } var memberService = new MemberService(); var memberInfo = memberService.TokenToMember(requestData.Token).Result; if (memberInfo == null || memberInfo.OrgId != learningCircleInfo.OrgId.Value) { responseData.InviteStatus = InviteStatusEnum.AccountNotAllow; return(responseData); } var organizationInfo = _uow.DbContext.Organizations.FirstOrDefault(t => t.Id == memberInfo.OrgId); if (organizationInfo == null) { responseData.InviteStatus = InviteStatusEnum.AccountNotAllow; return(responseData); } responseData.OrgName = organizationInfo.Name; //查出學生角色資訊 var learningRoleInfo = db.LearningRole.FirstOrDefault(t => t.Level == 3 && t.LearningId == learningCircleInfo.Id && t.IsFixed == false); if (learningRoleInfo == null) { responseData.InviteStatus = InviteStatusEnum.EndInvite; return(responseData); } //判斷要加的管理者是否跟Token帳號一致 var checkAddAccountIsSuccess = requestData.Accounts.FirstOrDefault(t => t.ToString().ToLower() == memberInfo.Account.ToLower()); if (checkAddAccountIsSuccess == null) { responseData.InviteStatus = InviteStatusEnum.inviteError; return(responseData); } //將驗證碼失效 var getOldInviteData = _uow.DbContext.MemberInvite.FirstOrDefault (t => t.CircleKey.ToLower() == inviteData.CircleKey.ToLower() && t.Enable == true && t.Type == 0 && t.Code.ToLower() == requestData.InviteCode.ToLower()); if (getOldInviteData != null && getOldInviteData.IsCourseCode == false) { getOldInviteData.Enable = false; } else if (getOldInviteData.IsCourseCode == false) { responseData.InviteStatus = InviteStatusEnum.inviteError; return(responseData); } var checkJoined = db.CircleMemberRoleplay.FirstOrDefault(t => t.MemberId == memberInfo.Id && t.RoleId == learningRoleInfo.Id && t.CircleId == learningCircleInfo.Id); if (checkJoined == null) { var entity = new CircleMemberRoleplay() { CircleId = learningCircleInfo.Id, Enable = true, MemberId = memberInfo.Id, ResType = requestData.ResType, RoleId = learningRoleInfo.Id }; db.CircleMemberRoleplay.Add(entity); var circleMemberEntity = new CircleMember() { CircleId = learningCircleInfo.Id, Enabled = true, MemberId = memberInfo.Id, Created = TimeData.Create(DateTime.UtcNow), Deleted = TimeData.Create(null), Updated = TimeData.Create(null) }; db.CircleMember.Add(circleMemberEntity); db.CircleMemberRoleplay.Add(entity); } else { checkJoined.Enable = true; } db.SaveChanges(); responseData.InviteStatus = InviteStatusEnum.success; return(responseData); }