public async Task <UpsertModel> UpsertEvent(UpsertMode mode, EventViewModel model) { var upsert = new UpsertModel(); try { Activity activity; string title; System.Text.StringBuilder builder; // Apply changes Event = model.ParseAsEntity(Event); builder = new System.Text.StringBuilder(); if (model.EventId == 0) { db.Events.Add(Event); title = "Event Recorded"; builder.Append("An Event record has been made").AppendLine(); } else { db.Entry(Event).State = System.Data.Entity.EntityState.Modified; title = "Event Updated"; builder.Append("The following changes have been made to the Event details"); if (mode == UpsertMode.Admin) { builder.Append(" (by the Admin)"); } builder.Append(":").AppendLine(); } await db.SaveChangesAsync(); EventId = Event.EventId; //update students here if (model.IsGeneral && Event.EventStudents.ToList().Count() <= 0) { var currentTerm = db.Terms.ToList().FirstOrDefault(m => m.IsCurrentTerm); // take all students to be those of only the current term Event.EventStudents = db.Students.ToList().Where(m => !m.NoParents && m.CurrentTermId == currentTerm.TermId).ToList().Select(p => new StudentEvent(p.StudentId, Event.EventId)).ToList(); db.Entry(Event).State = System.Data.Entity.EntityState.Modified; } //if (model.IsGeneral && Event.EventStudents.Count() <= 0) //{ // var currentTerm = db.Terms.ToList().FirstOrDefault(m => m.IsCurrentTerm); // // take all students to be those of only the current term // var students = db.Students.ToList().Where(m => !m.NoParents && m.CurrentTermId == currentTerm.TermId).Select(p => new StudentEvent(p.StudentId, Event.EventId)).ToList(); // foreach (var student in students) // { // db.StudentEvents.Add(student); // } // //db.Entry(Event).State = System.Data.Entity.EntityState.Modified; //} // Save activity now so we have a EventId. Not ideal, but hey activity = CreateActivity(title, builder.ToString()); activity.UserId = ServiceUserId; await db.SaveChangesAsync(); if (model.EventId == 0) { upsert.ErrorMsg = "Event record created successfully"; } else { upsert.ErrorMsg = "Event record updated successfully"; } upsert.RecordId = Event.EventId.ToString(); } catch (Exception ex) { upsert.ErrorMsg = ex.Message; //RecordException("Update Event Error", ex); } return(upsert); }
public async Task <UpsertModel> UpsertEvent(UpsertMode mode, EventViewModel model) { var upsert = new UpsertModel(); try { Activity activity; string title; System.Text.StringBuilder builder; // Apply changes Event Event; if (model.EventId > 0) { Event = db.Events.Find(model.EventId); } else { Event = new Event(); } Event = model.ParseAsEntity(Event); builder = new System.Text.StringBuilder(); if (model.EventId == 0) { db.Events.Add(Event); title = "Event Added"; builder.AppendFormat("An Event record has been made for: {0} students' Parents", model.Data.Count()).AppendLine(); } else { db.Entry(Event).State = System.Data.Entity.EntityState.Modified; title = "Event Updated"; builder.Append("The following changes have been made to the Event details"); if (mode == UpsertMode.Admin) { builder.Append(" (by the Admin)"); } builder.Append(":").AppendLine(); } await db.SaveChangesAsync(); // update students here //Event.Students = model.Data.Select(p => new StudentEvent(p, Event.EventId)).ToList(); if (model.Students != null && Event.EventStudents.Count() <= 0) { if (model.Students.Count() > 0) { Event.EventStudents = model.Students.Select(p => new StudentEvent(p.StudentId, Event.EventId)).ToList(); db.Entry(Event).State = System.Data.Entity.EntityState.Modified; } } //if (model.Students != null && Event.EventStudents.Count() <= 0) //{ // if (model.Students.Count() > 0) // { // var students = model.Students.Select(p => new StudentEvent(p.StudentId, Event.EventId)).ToList(); // foreach (var student in students) // { // db.StudentEvents.Add(student); // } // //db.Entry(Event).State = System.Data.Entity.EntityState.Modified; // } //} // Save activity now so we have a StudentId. Not ideal, but hey activity = CreateActivity(title, builder.ToString()); activity.UserId = ServiceUserId; await db.SaveChangesAsync(); if (model.EventId == 0) { upsert.ErrorMsg = "Event record created successfully"; } else { upsert.ErrorMsg = "Event record updated successfully"; } upsert.RecordId = Event.EventId.ToString(); } catch (Exception ex) { upsert.ErrorMsg = ex.Message; } return(upsert); }