public static void MoveToOrg(CMSDataContext db, int pid, int fromOrg, int toOrg, bool? moveregdata = true, int toMemberTypeId = -1)
{
if (fromOrg == toOrg)
return;
var om = db.OrganizationMembers.Single(m => m.PeopleId == pid && m.OrganizationId == fromOrg);
var tom = db.OrganizationMembers.SingleOrDefault(m => m.PeopleId == pid && m.OrganizationId == toOrg);
if (tom == null)
{
tom = InsertOrgMembers(db,
toOrg, pid, MemberTypeCode.Member, DateTime.Now, null, om.Pending ?? false);
if (tom == null)
return;
}
tom.MemberTypeId = toMemberTypeId != -1
? toMemberTypeId
: om.MemberTypeId;
tom.UserData = om.UserData;
if (om.Pending == true) // search for PromotingTo Extra Value to update
{
var fromev = (from vv in db.OrgMemberExtras
where vv.PeopleId == om.PeopleId
where vv.IntValue == om.OrganizationId
where vv.Field == "PromotingTo"
select vv).SingleOrDefault();
if (fromev != null)
fromev.IntValue = tom.OrganizationId;
}
if (moveregdata == true)
{
tom.Request = om.Request;
tom.Amount = om.Amount;
tom.OnlineRegData = om.OnlineRegData;
tom.RegistrationDataId = om.RegistrationDataId;
tom.Grade = om.Grade;
tom.RegisterEmail = om.RegisterEmail;
tom.ShirtSize = om.ShirtSize;
tom.TranId = om.TranId;
tom.Tickets = om.Tickets;
var sg = om.OrgMemMemTags.Select(mt => mt.MemberTag.Name).ToList();
foreach (var s in sg)
tom.AddToGroup(db, s);
}
if (om.OrganizationId != tom.OrganizationId)
tom.Moved = true;
om.Drop(db);
db.SubmitChanges();
}