public Summary Copy(Summary oldSummary, Summary newSummary) { oldSummary = _context.Summaries .Include("People") .Include("SummaryActivities") .Include("SummaryActivities.Activity") .Single(x => x.Id == oldSummary.Id); var activities = oldSummary.SummaryActivities.Select(x => x.Activity); return this.Save(newSummary, activities.ToList(), oldSummary.People.ToList()); }
//TODO: как-то по-индусски получилось public List<Activity> Activities(Summary summary) { var result = _context.Activities.Select(x => new { Id = x.Id, Title = x.Title, Checked = x.SummaryActivities.Any(xx => xx.SummaryId == summary.Id) }).ToArray(); return result.Select(x => new Activity { Id = x.Id, Title = x.Title, Checked = x.Checked }).ToList(); }
public ActionResult Copy(string oldId, string newTitle) { int oldSummaryId = 0; if (Int32.TryParse(oldId, out oldSummaryId) && !String.IsNullOrEmpty(newTitle)) { MinStatIdentity identity = (MinStatIdentity)this.HttpContext.User.Identity; Summary oldSummary = _summaryRep.List().Single(x => x.Id == oldSummaryId); Summary newSummary = new Summary { Title = newTitle, CreateDate = DateTime.Now, Published = false, AuthorName = identity.FullName, EnterpriseId = identity.EnterpriseId }; _summaryRep.Copy(oldSummary, newSummary); } return RedirectToAction("Index"); }
public Summary Save(Summary summary, List<Activity> activities, List<Person> people = null) { if (summary.Published) return summary; //using (TransactionScope ts = new TransactionScope()) { if (summary.Id == 0) { _context.Summaries.Add(summary); } else { summary = _context.Summaries.Single(x => x.Id == summary.Id); var oldActivities = _context.Summaries .Include("SummaryActivities") .Include("SummaryActivities.Activity") .Single(x => x.Id == summary.Id) .SummaryActivities .Select(x => x.Activity) .ToList(); var activitiesToRemove = oldActivities.Except(activities, new ActivityEqualityComparer()).ToList(); var activitiesToAdd = activities.Except(oldActivities, new ActivityEqualityComparer()).ToList(); activities = activitiesToAdd.ToList(); foreach (var activityToRemove in activitiesToRemove) { var summaryActivitiesToRemove = _context.SummaryActivities.Single(x => x.ActivityId == activityToRemove.Id && x.SummaryId == summary.Id); _context.SummaryActivities.Remove(summaryActivitiesToRemove); } } foreach (var activity in activities) { SummaryActivity sa = new SummaryActivity { ActivityId = activity.Id, Summary = summary }; _context.SummaryActivities.Add(sa); if (people != null) { foreach (Person person in people.Where(p => p.ActivityId == activity.Id)) { Person newPerson = new Person { ActivityId = activity.Id, Summary = summary, BirthDate = person.BirthDate, EducationLevelId = person.EducationLevelId, FirstName = person.FirstName, LastName = person.LastName, Salary = person.Salary, Job = person.Job, JobLevelId = person.JobLevelId }; _context.Peoples.Add(newPerson); } } } _context.SaveChanges(); // ts.Complete(); return summary; } }
public IEnumerable<POCO.Person> List(Summary summary, Activity activity) { var result = _context.Peoples.Where(x => x.ActivityId == activity.Id && x.SummaryId == summary.Id); return result; }
public ActionResult Save(string id, string title, IEnumerable<ActivityViewModel> activities) { MinStatIdentity identity = (MinStatIdentity)this.HttpContext.User.Identity; Summary summary = null; List<Activity> acts = activities.Where(x => x.Checked).Select(x => new Activity { Id = Int32.Parse(x.Id) }).ToList(); int summaryId; if (Int32.TryParse(id, out summaryId)) { summary = _summaryRep.List().Single(x => x.Id == summaryId); } else { summary = new Summary { Title = title, CreateDate = DateTime.Now, Published = false, AuthorName = identity.FullName, EnterpriseId = identity.EnterpriseId }; } this._summaryRep.Save(summary, acts); return RedirectToAction("Index"); }