Beispiel #1
0
		void BindMemberAdminOptionsDataGrid()
		{
			if (HasMemberAdmin)
			{
				#region Status level Q
				ArrayList alStatusLevels = new ArrayList();
				if (MemberAdminOptionsMembersCheckBox.Checked)
				{
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Member));
				}
				if (MemberAdminOptionsRequestCheckBox.Checked)
				{
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Request));
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Recommend));
				}
				if (MemberAdminOptionsInvitedCheckBox.Checked)
				{
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Invite));
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.InviteRejected));
				}
				if (MemberAdminOptionsRejectedCheckBox.Checked)
				{
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.RecommendRejected));
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.RequestRejected));
				}
				if (MemberAdminOptionsExitedCheckBox.Checked)
				{
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Exited));
				}
				if (MemberAdminOptionsBarredCheckBox.Checked)
				{
					alStatusLevels.Add(new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Barred));
				}
				Q qStatusLevels = new Q(false);
				MemberAdminOptionsSearchNoneSelected.Visible = alStatusLevels.Count == 0 && MemberAdminOptionsSearchClicked;
				if (alStatusLevels.Count > 0)
				{
					qStatusLevels = new Or((Q[])alStatusLevels.ToArray(typeof(Q)));
				}
				#endregion
				#region Nickname Q
				Q qNickName = new Q(true);
				if (MemberAdminOptionsSearchTextBox.Text.Trim().Length > 0)
				{
					qNickName = new Q(new Column(GroupUsr.Columns.UsrK, Usr.Columns.NickName), QueryOperator.TextContains, MemberAdminOptionsSearchTextBox.Text.Trim());
				}
				#endregion

				Query q = new Query();
				q.QueryCondition = new And(
					new Q(GroupUsr.Columns.GroupK, CurrentGroup.K),
					qStatusLevels,
					qNickName
				);
				q.Columns = new ColumnSet(
					GroupUsr.Columns.UsrK,
					GroupUsr.Columns.Status,
					GroupUsr.Columns.Moderator,
					GroupUsr.Columns.NewsAdmin,
					GroupUsr.Columns.MemberAdmin,
					GroupUsr.Columns.Owner,
					GroupUsr.Columns.StatusChangeDateTime,
					GroupUsr.Columns.StatusChangeUsrK,
					GroupUsr.Columns.InviteUsrK,
					new JoinedColumnSet(
						GroupUsr.Columns.UsrK,
						Usr.LinkColumns
					),
					new JoinedColumnSet(
						GroupUsr.Columns.StatusChangeUsrK,
						Usr.LinkColumns
					),
					new JoinedColumnSet(
						GroupUsr.Columns.InviteUsrK,
						Usr.LinkColumns
					)
				);
				q.TableElement = GroupUsr.UsrAndStatusChangeUsrJoin;
				q.OrderBy = new OrderBy(new OrderBy(GroupUsr.Columns.StatusChangeDateTime, OrderBy.OrderDirection.Descending), new OrderBy(new Column(GroupUsr.Columns.UsrK, Usr.Columns.NickName)));
				GroupUsrSet gus = new GroupUsrSet(q);

				MemberAdminOptionsSearchNoResults.Visible = gus.Count == 0 && alStatusLevels.Count > 0;
				MemberAdminOptionsDataGridP.Visible = gus.Count > 0;
				if (gus.Count > 0)
				{
					MemberAdminOptionsDataGrid.AllowPaging = (gus.Count > MemberAdminOptionsDataGrid.PageSize);
					MemberAdminOptionsDataGrid.DataSource = gus;
					MemberAdminOptionsDataGrid.DataBind();
				}
			}
		}
Beispiel #2
0
		protected void MemberAdminRequestsUpdate_Click(object sender, System.EventArgs e)
		{
			if (HasMemberAdmin)
			{
				Query q = new Query();
				q.NoLock = true;
				q.QueryCondition = new And(
					new Q(GroupUsr.Columns.GroupK, CurrentGroup.K),
					new Or(
						new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Request),
						new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Recommend)
					)
				);
				GroupUsrSet gus = new GroupUsrSet(q);

				MemberAdminRequestsUpdateResultsP.InnerHtml = "";
				bool doneOne = false;
				foreach (GroupUsr gu in gus)
				{
					try
					{
						CheckBox accCb = (CheckBox)Cambro.Web.Helpers.SearchControl(MemberAdminRequestsDataGrid, "ReqAccUsrK" + gu.UsrK.ToString());
						CheckBox rejCb = (CheckBox)Cambro.Web.Helpers.SearchControl(MemberAdminRequestsDataGrid, "ReqRejUsrK" + gu.UsrK.ToString());
						if (accCb != null && rejCb != null)
						{
							if (accCb.Checked != rejCb.Checked)
							{
								if (accCb.Checked)
								{
									doneOne = true;
									Return r = CurrentGroup.Invite(gu.Usr, gu, Usr.Current, CurrentGroupUsr, "", false);
									MemberAdminRequestsUpdateResultsP.InnerHtml += (MemberAdminRequestsUpdateResultsP.InnerHtml.Length > 0 ? "<br>" : "") + "Accepting " + gu.Usr.Link() + " - " + (r.Success ? "Done." : "Error: " + r.MessageHtml);
								}
								else if (rejCb.Checked)
								{
									doneOne = true;
									Return r = CurrentGroup.Reject(gu.Usr, gu, Usr.Current, CurrentGroupUsr);
									MemberAdminRequestsUpdateResultsP.InnerHtml += (MemberAdminRequestsUpdateResultsP.InnerHtml.Length > 0 ? "<br>" : "") + "Rejecting " + gu.Usr.Link() + " - " + (r.Success ? "Done." : "Error: " + r.MessageHtml);
								}
							}
						}
					}
					catch { }
				}
				if (doneOne)
				{
					CurrentGroup.UpdateTotalMembers();
					MemberAdminRequestsDataGrid.CurrentPageIndex = 0;
					BindRequestsDataGrid();
					ContainerPage.AnchorSkip("MemberAdminRequests");
				}
			}
		}
Beispiel #3
0
		void BindRequestsDataGrid()
		{
			if (HasMemberAdmin)
			{
				Query q = new Query();
				q.QueryCondition = new And(
					new Q(GroupUsr.Columns.GroupK, CurrentGroup.K),
					new Or(
						new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Request),
						new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Recommend)
					)
				);
				q.Columns = new ColumnSet(
					GroupUsr.Columns.Status,
					GroupUsr.Columns.Moderator,
					GroupUsr.Columns.NewsAdmin,
					GroupUsr.Columns.MemberAdmin,
					GroupUsr.Columns.Owner,
					GroupUsr.Columns.StatusChangeDateTime,
					GroupUsr.Columns.UsrK,
					GroupUsr.Columns.InviteUsrK,
					new JoinedColumnSet(
						GroupUsr.Columns.UsrK,
						Usr.LinkColumns
					),
					GroupUsr.Columns.StatusChangeUsrK,
					new JoinedColumnSet(
						GroupUsr.Columns.StatusChangeUsrK,
						Usr.LinkColumns
					),
					new JoinedColumnSet(
						GroupUsr.Columns.InviteUsrK,
						Usr.LinkColumns
					)
				);
				q.TableElement = GroupUsr.UsrAndStatusChangeUsrJoin;
				q.OrderBy = new OrderBy(GroupUsr.Columns.StatusChangeDateTime, OrderBy.OrderDirection.Descending);
				GroupUsrSet gus = new GroupUsrSet(q);
				MemberAdminRequestsDataGridPanel.Visible = gus.Count > 0;
				MemberAdminRequestsNoResultsP.Visible = gus.Count == 0;
				if (gus.Count > 0)
				{
					MemberAdminRequestsDataGrid.AllowPaging = (gus.Count > MemberAdminRequestsDataGrid.PageSize);
					MemberAdminRequestsDataGrid.DataSource = gus;
					MemberAdminRequestsDataGrid.DataBind();
				}
			}
		}
Beispiel #4
0
		void BindModeratorsDataGrid()
		{
			if (HasOwner)
			{
				Query q = new Query();
				q.QueryCondition = new And(
					new Q(GroupUsr.Columns.GroupK, CurrentGroup.K),
					new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Member),
					new Q(GroupUsr.Columns.Moderator, true)
				);
				q.Columns = new ColumnSet(
					GroupUsr.Columns.UsrK,
					GroupUsr.Columns.Status,
					GroupUsr.Columns.Moderator,
					GroupUsr.Columns.NewsAdmin,
					GroupUsr.Columns.MemberAdmin,
					GroupUsr.Columns.Owner,
					new JoinedColumnSet(
						GroupUsr.Columns.UsrK,
						Usr.LinkColumns
					)
				);
				q.TableElement = GroupUsr.UsrJoin;
				q.OrderBy = new OrderBy(new Column(GroupUsr.Columns.UsrK, Usr.Columns.NickName));
				GroupUsrSet gus = new GroupUsrSet(q);
				if (gus.Count > 0)
				{
					OwnerModeratorsDataGrid.AllowPaging = (gus.Count > OwnerModeratorsDataGrid.PageSize);
					OwnerModeratorsDataGrid.DataSource = gus;
					OwnerModeratorsDataGrid.DataBind();
				}
			}
		}
Beispiel #5
0
		protected void OwnerModeratorsUpdate(object sender, System.EventArgs e)
		{
			if (HasOwner)
			{
				Query q = new Query();
				q.NoLock = true;
				q.QueryCondition = CurrentGroup.ModeratorQ;
				GroupUsrSet gus = new GroupUsrSet(q);

				#region check for at least one owner!!!
				bool gotOwner = false;
				foreach (GroupUsr gu in gus)
				{
					CheckBox ownerCb = (CheckBox)Cambro.Web.Helpers.SearchControl(OwnerModeratorsDataGrid, "OwnerUsrK" + gu.UsrK.ToString());
					if (ownerCb != null)
					{
						if (ownerCb.Checked)
						{
							gotOwner = true;
						}
					}
					else
					{
						if (gu.Owner)
						{
							gotOwner = true;
						}
					}
				}
				#endregion
				if (!gotOwner)
					OnwerModeratorError.Visible = true;
				else
				{
					bool removedMod = false;
					foreach (GroupUsr gu in gus)
					{
						try
						{
							if (Usr.Current.IsAdmin || gu.UsrK != Usr.Current.K)
							{
								CheckBox modCb = (CheckBox)Cambro.Web.Helpers.SearchControl(OwnerModeratorsDataGrid, "ModUsrK" + gu.UsrK.ToString());
								CheckBox newsCb = (CheckBox)Cambro.Web.Helpers.SearchControl(OwnerModeratorsDataGrid, "NewsUsrK" + gu.UsrK.ToString());
								CheckBox memberCb = (CheckBox)Cambro.Web.Helpers.SearchControl(OwnerModeratorsDataGrid, "MemberUsrK" + gu.UsrK.ToString());
								CheckBox ownerCb = (CheckBox)Cambro.Web.Helpers.SearchControl(OwnerModeratorsDataGrid, "OwnerUsrK" + gu.UsrK.ToString());
								if (modCb != null && newsCb != null && memberCb != null && ownerCb != null)
								{
									bool prevOwner = gu.Owner;
									bool prevMemberAdmin = gu.MemberAdmin;
									bool prevNewsAdmin = gu.NewsAdmin;
									bool prevModerator = gu.Moderator;
									if (ownerCb.Checked)
									{
										gu.ChangeModeratorPermission(true, true, true, true);
									}
									else if (memberCb.Checked || newsCb.Checked)
									{
										gu.ChangeModeratorPermission(true, newsCb.Checked, memberCb.Checked, false);
									}
									else if (modCb.Checked)
									{
										gu.ChangeModeratorPermission(true, false, false, false);
									}
									else
									{
										removedMod = true;
										gu.ChangeModeratorPermission(false, false, false, false);
									}
								}
							}
						}
						catch { }
					}

					CurrentGroup.UpdateTotalMembers();
					if (removedMod)
						BindModeratorsDataGrid();

					OnwerModeratorDone.Visible = true;
				}

			}
		}
Beispiel #6
0
		public void UpdateIsGroupModerator()
		{
			Query q = new Query();
			q.QueryCondition = new And(new Q(GroupUsr.Columns.UsrK, this.K), new Q(GroupUsr.Columns.Moderator, true));
			q.TopRecords = 1;
			GroupUsrSet gus = new GroupUsrSet(q);
			bool newVal = gus.Count != 0;
			if (this.IsGroupModerator != newVal)
			{
				this.IsGroupModerator = newVal;
				this.Update();
			}
		}
Beispiel #7
0
		void BindGroups()
		{
			Query q = new Query();
			q.QueryCondition = new And(
				new Q(GroupUsr.Columns.UsrK, Usr.Current.K),
				new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Member)
			);
			q.Columns = new ColumnSet(
				GroupUsr.Columns.GroupK,
				GroupUsr.Columns.Status,
				GroupUsr.Columns.Moderator,
				//GroupUsr.Columns.HideWhenRead,
				GroupUsr.Columns.Favourite,
				new JoinedColumnSet(
					GroupUsr.Columns.GroupK,
					Group.Columns.Name,
					Group.Columns.BrandK,
					Group.Columns.TotalMembers,
					Group.Columns.TotalComments,
					Group.Columns.LastPost,
					Group.Columns.UrlName),
				new JoinedColumnSet(
					GroupUsr.Columns.GroupK,
					CommentAlert.Columns.UsrK,
					CommentAlert.Columns.ParentObjectType,
					CommentAlert.Columns.ParentObjectK)
			);
			q.TableElement = GroupUsr.GroupJoin;
			q.TableElement = new Join(
				q.TableElement,
				new TableElement(new Column(GroupUsr.Columns.GroupK, CommentAlert.Columns.ParentObjectK)),
				QueryJoinType.Left,
				new And(
					new Q(GroupUsr.Columns.GroupK, new Column(GroupUsr.Columns.GroupK, CommentAlert.Columns.ParentObjectK), true),
					new Q(new Column(GroupUsr.Columns.GroupK, CommentAlert.Columns.ParentObjectType), Model.Entities.ObjectType.Group),
					new Q(new Column(GroupUsr.Columns.GroupK, CommentAlert.Columns.UsrK), Usr.Current.K)
				)
			);
			q.OrderBy = new OrderBy(
				new OrderBy(GroupUsr.Columns.Favourite, OrderBy.OrderDirection.Descending),
				new OrderBy(GroupUsr.Columns.Owner, OrderBy.OrderDirection.Descending),
				new OrderBy(GroupUsr.Columns.Moderator, OrderBy.OrderDirection.Descending),
				new OrderBy(new Column(GroupUsr.Columns.GroupK, Group.Columns.Name))
			);
			GroupUsrSet vs = new GroupUsrSet(q);
			PanelGroupsList.Visible = vs.Count > 0;
			PanelNoGroups.Visible = vs.Count == 0;
			if (vs.Count > 0)
			{
				GroupsDataGrid.AllowPaging = (vs.Count > GroupsDataGrid.PageSize);
				GroupsDataGrid.DataSource = vs;
				GroupsDataGrid.DataBind();
			}
		}
Beispiel #8
0
		void BindInvites()
		{
			Query q = new Query();
			q.QueryCondition = new And(
				new Q(GroupUsr.Columns.UsrK, Usr.Current.K),
				new Q(GroupUsr.Columns.Status, GroupUsr.StatusEnum.Invite)
			);
			q.Columns = new ColumnSet(
				GroupUsr.Columns.GroupK,
				GroupUsr.Columns.Status,
				GroupUsr.Columns.StatusChangeDateTime,
				GroupUsr.Columns.InviteMessage,
				GroupUsr.Columns.InviteUsrK,
				new JoinedColumnSet(
					GroupUsr.Columns.InviteUsrK,
					Usr.LinkColumns
				),
				new JoinedColumnSet(
					GroupUsr.Columns.GroupK,
					Group.Columns.Name,
					Group.Columns.TotalMembers,
					Group.Columns.TotalComments,
					Group.Columns.LastPost,
					Group.Columns.UrlName
				)
			);
			q.TableElement = GroupUsr.GroupAndInvitingUsrJoin;
			q.OrderBy = new OrderBy(GroupUsr.Columns.StatusChangeDateTime, OrderBy.OrderDirection.Descending);
			GroupUsrSet gus = new GroupUsrSet(q);
			PanelInvites.Visible = gus.Count > 0;
			if (gus.Count > 0)
			{
				InvitesDataGrid.AllowPaging = (gus.Count > InvitesDataGrid.PageSize);
				InvitesDataGrid.DataSource = gus;
				InvitesDataGrid.DataBind();
			}
		}
Beispiel #9
0
		public void MergeAndDelete(Group merge)
		{
			if (this.K==merge.K)
				throw new DsiUserFriendlyException("Can't merge group into itself!");

			Cambro.Web.Helpers.WriteAlertHeader();

			Cambro.Web.Helpers.WriteAlert("Starting group merge...", true);

			Cambro.Web.Helpers.WriteAlert("Merging group members...", true);
			//members
			Query qGu = new Query();
			qGu.QueryCondition=new Q(GroupUsr.Columns.GroupK,merge.K);
			GroupUsrSet gus = new GroupUsrSet(qGu);
			int count = 0;
			foreach (GroupUsr guMerge in gus)
			{
				if (count%10==0)
					Cambro.Web.Helpers.WriteAlert("Merging usr " + guMerge.UsrK + " ("+count+" / "+gus.Count+")...");

				try
				{

					count++;
					GroupUsr guMaster = this.GetGroupUsr(guMerge.Usr);
					if (guMaster == null)
					{
						guMaster = new GroupUsr();
						guMaster.UsrK = guMerge.UsrK;
						guMaster.GroupK = this.K;
						guMaster.Status = guMerge.Status;
						guMaster.StatusChangeDateTime = guMerge.StatusChangeDateTime;
						guMaster.StatusChangeUsrK = guMerge.StatusChangeUsrK;
						guMaster.Owner = guMerge.Owner;
						guMaster.Moderator = guMerge.Moderator;
						guMaster.NewsAdmin = guMerge.NewsAdmin;
						guMaster.MemberAdmin = guMerge.MemberAdmin;
						guMaster.MemberAdminNewUserEmails = guMerge.MemberAdminNewUserEmails;
						guMaster.Favourite = guMerge.Favourite;
						guMaster.InviteMessage = guMerge.InviteMessage;
						guMaster.InviteUsrK = guMerge.InviteUsrK;
						guMaster.Update();

						guMaster.Usr.UpdateIsGroupModerator();

					}
					else
					{
						if (guMaster.StatusPermissionLevel < guMerge.StatusPermissionLevel)
						{
							guMaster.Status = guMerge.Status;
							guMaster.StatusChangeDateTime = guMerge.StatusChangeDateTime;
							guMaster.StatusChangeUsrK = guMerge.StatusChangeUsrK;
							guMaster.InviteMessage = guMerge.InviteMessage;
							guMaster.InviteUsrK = guMerge.InviteUsrK;
						}
						if (this.BrandK == 0 || merge.BrandK > 0)
						{
							if (guMerge.Owner)
								guMaster.Owner = true;
							if (guMerge.Moderator)
								guMaster.Moderator = true;
							if (guMerge.NewsAdmin)
								guMaster.NewsAdmin = true;
							if (guMerge.MemberAdmin)
							{
								guMaster.MemberAdmin = true;
								guMaster.MemberAdminNewUserEmails = guMerge.MemberAdminNewUserEmails;
							}
						}
						if (guMerge.Favourite)
							guMaster.Favourite = true;

						guMaster.Update();

						guMaster.Usr.UpdateIsGroupModerator();
					}

					if (guMaster.IsMember)
					{
						Mailer m = new Mailer();
						m.UsrRecipient = guMerge.Usr;
						m.Subject = "A group you were in has been merged";
						m.Body = "<p><i>" + merge.FriendlyName + "</i> has been merged with <i>" + this.FriendlyName + "</i>. " +
							"Your membership details have been moved across. If you ever want to exit the group, click the button " +
							"on the <a href=\"[LOGIN(" + this.Url() + ")]\">group homepage</a>.</p>";
						m.RedirectUrl = this.Url();
						m.Bulk = true;
						m.Send();
					}

					if (guMaster.IsMember && CommentAlert.IsEnabled(guMerge.UsrK, guMerge.GroupK, Model.Entities.ObjectType.Group))
						CommentAlert.Enable(guMaster.Usr, guMaster.GroupK, Model.Entities.ObjectType.Group);
				}
				catch 
				{
					Cambro.Web.Helpers.WriteAlert("Exception! ... deleting membership for usr " + guMerge.UsrK + " (" + count + " / " + gus.Count + ")...");
					guMerge.Delete();
				}
			}
			Cambro.Web.Helpers.WriteAlert("Done merging usrs...");

			//picture
			if (merge.HasPic && !this.HasPic)
			{
				Cambro.Web.Helpers.WriteAlert("Copying picture...", true);
				try
				{
					Utilities.CopyPic(merge, this);
				}
				catch
				{
					Cambro.Web.Helpers.WriteAlert("Exception while copying picture...", true);
				}
				Cambro.Web.Helpers.WriteAlert("Done copying picture...", true);
			}
			
			//recommended events
			if (this.BrandK == 0)
			{
				Cambro.Web.Helpers.WriteAlert("Merging recommended events...", true);
				Query qEv = new Query();
				qEv.QueryCondition = new Q(GroupEvent.Columns.GroupK, merge.K);
				GroupEventSet ges = new GroupEventSet(qEv);
				foreach (GroupEvent geMerge in ges)
				{
					try
					{
						GroupEvent geMaster = new GroupEvent(this.K, geMerge.EventK);
					}
					catch (BobNotFound)
					{
						GroupEvent geMaster = new GroupEvent();
						geMaster.GroupK = this.K;
						geMaster.EventK = geMerge.EventK;
						geMaster.Update();
					}
				}
				Cambro.Web.Helpers.WriteAlert("Done merging recommended events...");
			}

			Cambro.Web.Helpers.WriteAlert("Merging top photos...", true);
			//top photos
			Query qPh = new Query();
			qPh.QueryCondition=new Q(GroupPhoto.Columns.GroupK,merge.K);
			GroupPhotoSet gps = new GroupPhotoSet(qPh);
			foreach (GroupPhoto gpMerge in gps)
			{
				try
				{
					GroupPhoto gpMaster = new GroupPhoto(this.K,gpMerge.PhotoK);
					if (!gpMaster.ShowOnFrontPage && gpMerge.ShowOnFrontPage)
					{
						gpMaster.Caption=gpMerge.Caption;
						gpMaster.DateTime=gpMerge.DateTime;
						gpMaster.AddedByUsrK=gpMerge.AddedByUsrK;
						gpMaster.ShowOnFrontPage=gpMerge.ShowOnFrontPage;
						gpMaster.Update();
					}
				}
				catch (BobNotFound)
				{
					GroupPhoto gpMaster = new GroupPhoto();
					gpMaster.GroupK=this.K;
					gpMaster.PhotoK=gpMerge.PhotoK;
					gpMaster.Caption=gpMerge.Caption;
					gpMaster.DateTime=gpMerge.DateTime;
					gpMaster.AddedByUsrK=gpMerge.AddedByUsrK;
					gpMaster.ShowOnFrontPage=gpMerge.ShowOnFrontPage;
					gpMaster.Update();
				}
			}
			Cambro.Web.Helpers.WriteAlert("Done merging top photos...");

			//addedbyusrk's
			if (true)
			{
				Cambro.Web.Helpers.WriteAlert("Updating invited users...", true);
				Update update = new Update();
				update.Changes.Add(new Assign(Usr.Columns.AddedByGroupK, this.K));
				update.Table = TablesEnum.Usr;
				update.Where = new Q(Usr.Columns.AddedByGroupK, merge.K);
				update.Run();
				Cambro.Web.Helpers.WriteAlert("Done updating invited users...");
			}

			Cambro.Web.Helpers.WriteAlert("Merging topics (1/4)...", true);
			//chats
			if (merge.PrivateChat != this.PrivateChat ||
				merge.ThemeK != this.ThemeK ||
				merge.MusicTypeK != this.MusicTypeK)
			{
				Update update = new Update();
				update.Table=TablesEnum.Thread;
				update.Changes.Add(new Assign(Thread.Columns.PrivateGroup,this.PrivateChat));
				update.Changes.Add(new Assign(Thread.Columns.ThemeK, this.ThemeK));
				update.Changes.Add(new Assign(Thread.Columns.MusicTypeK, this.MusicTypeK));
				update.Where=new Q(Thread.Columns.GroupK,merge.K);
				update.Run();
			}
			Cambro.Web.Helpers.WriteAlert("Done merging topics (1/4)...");

			if (true)
			{
				Cambro.Web.Helpers.WriteAlert("Merging topics (2/4)...", true);
				Update update = new Update();
				update.Table=TablesEnum.Thread;
				update.Changes.Add(new Assign(Thread.Columns.UrlFragment,"groups/"+this.UrlName));
				update.Changes.Add(new Assign(Thread.Columns.CountryK, this.CountryK));
				update.Changes.Add(new Assign(Thread.Columns.PlaceK,this.PlaceK));
				update.Where=new And(new Q(Thread.Columns.ParentObjectType,Model.Entities.ObjectType.Group),new Q(Thread.Columns.ParentObjectK,merge.K));
				update.Run();
				Cambro.Web.Helpers.WriteAlert("Done merging topics (2/4)...");
			}

			if (true)
			{
				Cambro.Web.Helpers.WriteAlert("Merging topics (3/4)...", true);
				Update update = new Update();
				update.Table=TablesEnum.Thread;
				update.Changes.Add(new Assign(Thread.Columns.GroupK,this.K));
				update.Where=new Q(Thread.Columns.GroupK,merge.K);
				update.Run();
				Cambro.Web.Helpers.WriteAlert("Done merging topics (3/4)...");
			}
			
			if (true)
			{
				Cambro.Web.Helpers.WriteAlert("Merging topics (4/4)...", true);
				Update update = new Update();
				update.Table=TablesEnum.Thread;
				update.Changes.Add(new Assign(Thread.Columns.ParentObjectK,this.K));
				update.Where=new And(new Q(Thread.Columns.ParentObjectType,Model.Entities.ObjectType.Group),new Q(Thread.Columns.ParentObjectK,merge.K));
				update.Run();
				Cambro.Web.Helpers.WriteAlert("Done merging topics (4/4)...");
			}

			Cambro.Web.Helpers.WriteAlert("Deleting old group...", true);
			merge.DeleteAll(null);
			Cambro.Web.Helpers.WriteAlert("Done deleting old group...");

			Cambro.Web.Helpers.WriteAlert("Updating stats...", true);
			this.UpdateTotalComments(null);
			this.UpdateTotalMembers();
			Cambro.Web.Helpers.WriteAlert("Done updating stats...");

			Cambro.Web.Helpers.WriteAlert("Finished merging groups.", true);


		}
Beispiel #10
0
		public void UpdateTotalMembers()
		{
			bool update=false;
			if (true)
			{
				Query q = new Query();
				q.QueryCondition=this.MemberQ;
				q.ReturnCountOnly=true;
				GroupUsrSet gus = new GroupUsrSet(q);
				if (this.TotalMembers!=gus.Count)
				{
					this.TotalMembers=gus.Count;
					update=true;
				}
			}
			if (true)
			{
				Query q = new Query();
				q.QueryCondition=this.ModeratorQ;
				q.ReturnCountOnly=true;
				GroupUsrSet gus = new GroupUsrSet(q);
				if (this.TotalModerators!=gus.Count)
				{
					this.TotalModerators=gus.Count;
					update=true;
				}
			}
			if (true)
			{
				Query q = new Query();
				q.QueryCondition=this.OwnerQ;
				q.ReturnCountOnly=true;
				GroupUsrSet gus = new GroupUsrSet(q);
				if (this.TotalOwners!=gus.Count)
				{
					this.TotalOwners=gus.Count;
					update=true;
				}
			}
			if (true)
			{
				Query q = new Query();
				q.QueryCondition=new And(this.MemberQ,new Q(GroupUsr.Columns.Favourite,true));
				q.ReturnCountOnly=true;
				GroupUsrSet gus = new GroupUsrSet(q);
				if (this.FavouriteCount!=gus.Count)
				{
					this.FavouriteCount=gus.Count;
					update=true;
				}
			}
			if (update)
				this.Update();
		}