//public PartnershipAcceptedState(OrganizationAccount sender, IPartnershipRepository repository) //{ // _sender = sender; // _submitDateTime = DateTime.Now; // _repository = repository; //} public PartnershipAcceptedState(PartnershipStateInfo info) { _lastReceiverKey = info.Sender.Key; _lastSenderKey = info.Receiver.Key; _lastAction = info.Action; }
public static bool UpdatePartnershipStatus(Guid senderOrganizationAccountKey, Guid receiverOrganizationAccountKey, DateTime actionDateTime, PartnershipAction action) { //OrganizationAccount sender = null; //OrganizationAccount receiver = null; //PartnershipStateInfo newPartnershipState = null; //using (var db = new FHNWPrototypeDB()) //{ // sender = db.OrganizationAccounts.Single(x => x.Key == senderOrganizationAccountKey); // sender.Wall = new ContentStream(); // sender.Wall.Posts = new List<Post>(); // receiver = db.OrganizationAccounts.Single(x => x.Key == receiverOrganizationAccountKey); // receiver.Wall = new ContentStream(); // receiver.Wall.Posts = new List<Post>(); // newPartnershipState = new PartnershipStateInfo(); // newPartnershipState.Key = Guid.NewGuid(); // newPartnershipState.Action = action; // newPartnershipState.ActionDateTime = actionDateTime; // newPartnershipState.Receiver = sender; // newPartnershipState.Sender = receiver; // sender.PartnershipsRequested.Add(newPartnershipState); // receiver.PartnershipsReceived.Add(newPartnershipState); // db.SaveChanges(); //} PartnershipStateInfo lastPartnershipStateInfo = GetPartnershipBetweenOrganizationAccounts(senderOrganizationAccountKey, receiverOrganizationAccountKey); if (lastPartnershipStateInfo != null) { var partnershipState = PartnershipStateFactory.GetPartnershipStateBasedOnInfo(lastPartnershipStateInfo); switch (action) { case PartnershipAction.Accept: if (partnershipState.CanAcceptPartnershipRequestFrom(senderOrganizationAccountKey, receiverOrganizationAccountKey)) { using (var db = new FHNWPrototypeDB()) { var lastState = (from partnerships in db.Partnerships .Include("Sender.Organization") .Include("Receiver.Organization") where (((partnerships.Sender.Key == senderOrganizationAccountKey && partnerships.Receiver.Key == receiverOrganizationAccountKey) || (partnerships.Sender.Key == receiverOrganizationAccountKey && partnerships.Receiver.Key == senderOrganizationAccountKey)) && (partnerships.IsActive == true)) orderby partnerships.ActionDateTime descending select partnerships) .FirstOrDefault(); lastState.IsActive = false; OrganizationAccount sender = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == senderOrganizationAccountKey); OrganizationAccount receiver = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == receiverOrganizationAccountKey); PartnershipStateInfo newPartnershipState = new PartnershipStateInfo(); newPartnershipState.Key = Guid.NewGuid(); newPartnershipState.Action = PartnershipAction.Accept; newPartnershipState.ActionDateTime = actionDateTime; newPartnershipState.Receiver = receiver; newPartnershipState.Sender = sender; newPartnershipState.IsActive = true; db.Partnerships.Add(newPartnershipState); // sender.PartnershipsRequested.Add(newPartnershipState); // receiver.PartnershipsReceived.Add(newPartnershipState); db.SaveChanges(); return true; } //friendshipState.AcceptPartnershipRequestFrom(senderOrganizationAccountKey, receiverOrganizationAccountKey); } else { return false; } case PartnershipAction.Cancel: if (partnershipState.CanCancelPartnershipWith(senderOrganizationAccountKey, receiverOrganizationAccountKey)) { using (var db = new FHNWPrototypeDB()) { var lastState = (from partnerships in db.Partnerships .Include("Sender.Organization") .Include("Receiver.Organization") where (((partnerships.Sender.Key == senderOrganizationAccountKey && partnerships.Receiver.Key == receiverOrganizationAccountKey) || (partnerships.Sender.Key == receiverOrganizationAccountKey && partnerships.Receiver.Key == senderOrganizationAccountKey)) && (partnerships.IsActive == true)) orderby partnerships.ActionDateTime descending select partnerships) .FirstOrDefault(); lastState.IsActive = false; OrganizationAccount sender = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == senderOrganizationAccountKey); OrganizationAccount receiver = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == receiverOrganizationAccountKey); PartnershipStateInfo newPartnershipState = new PartnershipStateInfo(); newPartnershipState.Key = Guid.NewGuid(); newPartnershipState.Action = PartnershipAction.Cancel; newPartnershipState.ActionDateTime = actionDateTime; newPartnershipState.Receiver = receiver; newPartnershipState.Sender = sender; newPartnershipState.IsActive = true; db.Partnerships.Add(newPartnershipState); // sender.PartnershipsRequested.Add(newPartnershipState); // receiver.PartnershipsReceived.Add(newPartnershipState); db.SaveChanges(); return true; } // friendshipState.CancelPartnershipWith(senderOrganizationAccountKey, receiverOrganizationAccountKey); } else { return false; } case PartnershipAction.Reject: if (partnershipState.CanRejectPartnershipRequestFrom(senderOrganizationAccountKey, receiverOrganizationAccountKey)) { using (var db = new FHNWPrototypeDB()) { var lastState = (from partnerships in db.Partnerships .Include("Sender.Organization") .Include("Receiver.Organization") where (((partnerships.Sender.Key == senderOrganizationAccountKey && partnerships.Receiver.Key == receiverOrganizationAccountKey) || (partnerships.Sender.Key == receiverOrganizationAccountKey && partnerships.Receiver.Key == senderOrganizationAccountKey)) && (partnerships.IsActive == true)) orderby partnerships.ActionDateTime descending select partnerships) .FirstOrDefault(); lastState.IsActive = false; OrganizationAccount sender = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == senderOrganizationAccountKey); OrganizationAccount receiver = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == receiverOrganizationAccountKey); PartnershipStateInfo newPartnershipState = new PartnershipStateInfo(); newPartnershipState.Key = Guid.NewGuid(); newPartnershipState.Action = PartnershipAction.Reject; newPartnershipState.ActionDateTime = actionDateTime; newPartnershipState.Receiver = receiver; newPartnershipState.Sender = sender; newPartnershipState.IsActive = true; db.Partnerships.Add(newPartnershipState); // sender.PartnershipsRequested.Add(newPartnershipState); // receiver.PartnershipsReceived.Add(newPartnershipState); db.SaveChanges(); return true; } //friendshipState.RejectPartnershipRequestFrom(senderOrganizationAccountKey, receiverOrganizationAccountKey); } else { return false; } case PartnershipAction.Request: if (partnershipState.CanRequestPartnershipTo(senderOrganizationAccountKey, receiverOrganizationAccountKey)) { using (var db = new FHNWPrototypeDB()) { var lastState = (from partnerships in db.Partnerships .Include("Sender.Organization") .Include("Receiver.Organization") where (((partnerships.Sender.Key == senderOrganizationAccountKey && partnerships.Receiver.Key == receiverOrganizationAccountKey) || (partnerships.Sender.Key == receiverOrganizationAccountKey && partnerships.Receiver.Key == senderOrganizationAccountKey)) && (partnerships.IsActive == true)) orderby partnerships.ActionDateTime descending select partnerships) .FirstOrDefault(); lastState.IsActive = false; OrganizationAccount sender = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == senderOrganizationAccountKey); OrganizationAccount receiver = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == receiverOrganizationAccountKey); PartnershipStateInfo newPartnershipState = new PartnershipStateInfo(); newPartnershipState.Key = Guid.NewGuid(); newPartnershipState.Action = PartnershipAction.Request; newPartnershipState.ActionDateTime = actionDateTime; newPartnershipState.Receiver = receiver; newPartnershipState.Sender = sender; newPartnershipState.IsActive = true; db.Partnerships.Add(newPartnershipState); // sender.PartnershipsRequested.Add(newPartnershipState); // receiver.PartnershipsReceived.Add(newPartnershipState); db.SaveChanges(); return true; } // friendshipState.RequestPartnershipTo(senderOrganizationAccountKey, receiverOrganizationAccountKey); } else { return false; } //break; } return false; } else { if (action == PartnershipAction.Request) { using (var db = new FHNWPrototypeDB()) { var lastState = (from partnerships in db.Partnerships .Include("Sender.Organization") .Include("Receiver.Organization") where (((partnerships.Sender.Key == senderOrganizationAccountKey && partnerships.Receiver.Key == receiverOrganizationAccountKey) || (partnerships.Sender.Key == receiverOrganizationAccountKey && partnerships.Receiver.Key == senderOrganizationAccountKey)) && (partnerships.IsActive == true)) orderby partnerships.ActionDateTime descending select partnerships) .FirstOrDefault(); lastState.IsActive = false; OrganizationAccount sender = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == senderOrganizationAccountKey); OrganizationAccount receiver = db.OrganizationAccounts .Include("PartnershipsRequested") .Include("PartnershipsReceived") .SingleOrDefault(x => x.Key == receiverOrganizationAccountKey); PartnershipStateInfo newPartnershipState = new PartnershipStateInfo(); newPartnershipState.Key = Guid.NewGuid(); newPartnershipState.Action = PartnershipAction.Request; newPartnershipState.ActionDateTime = actionDateTime; newPartnershipState.Receiver = receiver; newPartnershipState.Sender = sender; newPartnershipState.IsActive = true; db.Partnerships.Add(newPartnershipState); // sender.PartnershipsRequested.Add(newPartnershipState); // receiver.PartnershipsReceived.Add(newPartnershipState); db.SaveChanges(); return true; } } else { return false; } } }
public static bool UpdatePartnershipStatus(string senderOrganizationAccountKey, string receiverOrganizationAccountKey, DateTime actionDateTime, PartnershipAction action) { bool success = OrganizationAccountRepository.UpdatePartnershipStatus(new Guid(senderOrganizationAccountKey), new Guid(receiverOrganizationAccountKey), actionDateTime, action); return success; }