/// <summary> /// /// </summary> /// <param name="Id"></param> public void DeleteSubscription(Guid Id) { var activity = Db.Occurrences.SingleOrDefault(ac => ac.Id == Id); if (activity != null) { var logger = LogManager.GetLogger("DischargeActivity"); var userProfile = UserManager.FindByName(User.Identity.Name); // das können auch mehrere sein! // es ist nicht klar, welche Subscription gemeint ist // die erste ist dann die beste var subscription = activity.Subscriptions.FirstOrDefault(s => s.UserId.Equals(userProfile.Id)); var ac = new ActivityService(); var summary = ac.GetSummary(Id); if (subscription != null) { var allDrawings = Db.SubscriptionDrawings.Where(x => x.Subscription.Id == subscription.Id).ToList(); foreach (var drawing in allDrawings) { Db.SubscriptionDrawings.Remove(drawing); } var bets = subscription.Bets.ToList(); foreach (var bet in bets) { Db.LotteriyBets.Remove(bet); } activity.Subscriptions.Remove(subscription); Db.Subscriptions.Remove(subscription); Db.SaveChanges(); logger.InfoFormat("{0} ({1}) by [{2}]", summary.Activity.Name, summary.Activity.ShortName, User.Identity.Name); if (new SystemConfig().MailSubscriptionEnabled) { var mailModel = new SubscriptionMailModel { Summary = summary, Subscription = subscription, User = userProfile, }; var mail = new MailController(); mail.Discharge(mailModel).Deliver(); } } else { logger.ErrorFormat("Missing subscription for activity {0} and user {1}", summary.Activity.Name, User.Identity.Name); } } }