Exemple #1
0
        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);
        }