Exemplo n.º 1
0
        public async Task <UpsertModel> UpsertExpense(UpsertMode mode, ExpenseViewModel model)
        {
            var upsert = new UpsertModel();

            try {
                Activity activity;
                string   title;
                System.Text.StringBuilder builder;

                // Record previous values for comparison
                double amount   = (Expense != null ? Expense.Amount : 0);
                string by       = (Expense != null ? Expense.By : string.Empty);
                string desc     = (Expense != null ? Expense.Description : string.Empty);
                int    category = (Expense != null ? Expense.Category : 0);
                int    changes  = 0;

                // Apply changes
                Expense = model.ParseAsEntity(Expense);

                builder = new System.Text.StringBuilder();

                if (model.ExpenseId == 0)
                {
                    db.Expenses.Add(Expense);

                    title = "Expense Created";
                    builder.Append(string.Format("A Expense record has been created for: {0}", model.By)).AppendLine();
                }
                else
                {
                    db.Entry(Expense).State = System.Data.Entity.EntityState.Modified;

                    title = "Expense Updated";
                    builder.Append("The following changes have been made to the Expense details");

                    if (mode == UpsertMode.Admin)
                    {
                        builder.Append(" (by the Admin)");
                    }

                    builder.Append(":").AppendLine();
                }

                if (amount != Expense.Amount)
                {
                    builder.AppendLine().AppendFormat("Amount: from '{0}' to '{1}'", amount, Expense.Amount);
                    changes += 1;
                }
                if (by != Expense.By)
                {
                    builder.AppendLine().AppendFormat("Expense By: from '{0}' to '{1}'", by, Expense.By);
                    changes += 1;
                }
                if (desc != Expense.Description)
                {
                    builder.AppendLine().AppendFormat("Description: from '{0}' to '{1}'", desc, Expense.Description);
                    changes += 1;
                }
                if (category != Expense.Category)
                {
                    var categoryValue = category == 0 ? "" : Expense.Categories()[category];
                    builder.AppendLine().AppendFormat("Category: from '{0}' to '{1}'", categoryValue, Expense.Categories()[model.Category]);
                    changes += 1;
                }

                await db.SaveChangesAsync();

                ExpenseId = Expense.ExpenseId;

                // Save activity now so we have a ExpenseId. Not ideal, but hey
                activity        = CreateActivity(title, builder.ToString());
                activity.UserId = ServiceUserId;

                await db.SaveChangesAsync();

                if (model.ExpenseId == 0)
                {
                    upsert.ErrorMsg = "Expense record created successfully";
                }
                else
                {
                    upsert.ErrorMsg = "Expense record updated successfully";
                }

                upsert.RecordId = Expense.ExpenseId.ToString();
            }
            catch (Exception ex) {
                upsert.ErrorMsg = ex.Message;
            }

            return(upsert);
        }
Exemplo n.º 2
0
        public async Task <UpsertModel> UpsertBank(UpsertMode mode, BankViewModel model)
        {
            var upsert = new UpsertModel();

            try
            {
                Activity activity;
                string   title;
                System.Text.StringBuilder builder;

                // Apply changes
                Bank = model.ParseAsEntity(Bank);

                builder = new System.Text.StringBuilder();

                if (model.BankId == 0)
                {
                    db.Banks.Add(Bank);

                    title = "Bank Recorded";
                    builder.Append("A Bank record has been made").AppendLine();
                }
                else
                {
                    db.Entry(Bank).State = System.Data.Entity.EntityState.Modified;

                    title = "Bank Updated";
                    builder.Append("The following changes have been made to the Bank details");

                    if (mode == UpsertMode.Admin)
                    {
                        builder.Append(" (by the Admin)");
                    }

                    builder.Append(":").AppendLine();
                }

                await db.SaveChangesAsync();

                BankId = Bank.BankId;

                // Save activity now so we have a BankId. Not ideal, but hey
                activity        = CreateActivity(title, builder.ToString());
                activity.UserId = ServiceUserId;

                await db.SaveChangesAsync();

                if (model.BankId == 0)
                {
                    upsert.ErrorMsg = "Bank record created successfully";
                }
                else
                {
                    upsert.ErrorMsg = "Bank record updated successfully";
                }

                upsert.RecordId = Bank.BankId.ToString();
            }
            catch (Exception ex)
            {
                upsert.ErrorMsg = ex.Message;
                //RecordException("Update Bank Error", ex);
            }

            return(upsert);
        }
Exemplo n.º 3
0
        public async Task <UpsertModel> UpsertMessage(UpsertMode mode, MessageViewModel model)
        {
            var upsert = new UpsertModel();

            try
            {
                // Apply changes
                Message = model.ParseAsEntity(Message);

                if (model.SendNow)
                {
                    var term = db.Terms.FirstOrDefault(x => x.IsCurrentTerm);

                    var parents = db.StudentParents.ToList().Where(x => x.Student.CurrentTermId == term.TermId && x.Parent.HasContact).ToList() /*.Select(m => m.Parent)*/;

                    foreach (var parent in parents)
                    {
                        var    result = sendTextMessage(parent.Parent.Contacts, model.MessageDescription);
                        string msgTitle;
                        System.Text.StringBuilder msgBuilder;

                        if (result.Contains("1701"))
                        {
                            msgTitle   = "Message Sent";
                            msgBuilder = new System.Text.StringBuilder()
                                         .Append("The following Message has been sent:")
                                         .AppendLine();
                        }
                        else
                        {
                            msgTitle   = "Message Sending Failed";
                            msgBuilder = new System.Text.StringBuilder()
                                         .Append("The following Message has failed to be sent:")
                                         .AppendLine();
                        }

                        msgBuilder.AppendLine().AppendFormat("Message: {0}", Message.MessageDescription)
                        .AppendLine().AppendFormat("Student: {0}", parent.Student.FullName)
                        .AppendLine().AppendFormat("Parent: {0}", parent.Parent.FullName);


                        // Record activity
                        var msgActivity = CreateActivity(msgTitle, msgBuilder.ToString());
                        msgActivity.UserId    = ServiceUserId;
                        msgActivity.ParentId  = parent.ParentId;
                        msgActivity.StudentId = parent.StudentId;
                    }

                    Message.Sent = DateTime.Now;
                    // make sure you create activity here after testing
                }

                Activity activity;
                string   title;
                System.Text.StringBuilder builder;

                builder = new System.Text.StringBuilder();

                if (model.MessageId == 0)
                {
                    db.Messages.Add(Message);

                    title = "Message Recorded";
                    builder.Append("A Message record has been made. ").AppendLine();
                }
                else
                {
                    db.Entry(Message).State = System.Data.Entity.EntityState.Modified;

                    title = "Message Updated";
                    builder.Append("The following changes have been made to the Message details");

                    if (mode == UpsertMode.Admin)
                    {
                        builder.Append(" (by the Admin)");
                    }

                    builder.Append(":").AppendLine();
                }

                await db.SaveChangesAsync();

                MessageId = Message.MessageId;


                // Save activity now so we have a MessageId. Not ideal, but hey
                activity        = CreateActivity(title, builder.ToString());
                activity.UserId = ServiceUserId;

                await db.SaveChangesAsync();

                if (model.MessageId == 0)
                {
                    upsert.ErrorMsg = "Message record created successfully";
                }
                else
                {
                    upsert.ErrorMsg = "Message record updated successfully";
                }

                upsert.RecordId = Message.MessageId.ToString();
            }
            catch (Exception ex)
            {
                upsert.ErrorMsg = ex.Message;
                //RecordException("Update Message Error", ex);
            }

            return(upsert);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        public async Task <UpsertModel> UpsertParent(UpsertMode mode, ParentViewModel model)
        {
            var upsert = new UpsertModel();

            try
            {
                Activity activity;
                string   title;
                System.Text.StringBuilder builder;

                // Get Student
                //var student = db.Students.FirstOrDefault(x => x.StudentId == model.StudentId);

                // Apply changes
                Parent = model.ParseAsEntity(Parent);

                builder = new System.Text.StringBuilder();

                if (model.ParentId == 0)
                {
                    db.Parents.Add(Parent);


                    title = "Parent Recorded";
                    builder.Append("A Parent record has been made : " + model.FirstName + " " + model.LastName).AppendLine();
                }
                else
                {
                    db.Entry(Parent).State = System.Data.Entity.EntityState.Modified;

                    title = "Parent Updated";
                    builder.Append("The following changes have been made to the Parent details");

                    if (mode == UpsertMode.Admin)
                    {
                        builder.Append(" (by the Admin)");
                    }

                    builder.Append(":").AppendLine();
                }

                await db.SaveChangesAsync();

                ParentId = Parent.ParentId;

                // update student parent relationship
                UpdateStudents(model.SelectedStudents);

                // Save activity now so we have a ParentId. Not ideal, but hey
                activity        = CreateActivity(title, builder.ToString());
                activity.UserId = ServiceUserId;

                await db.SaveChangesAsync();

                if (model.ParentId == 0)
                {
                    upsert.ErrorMsg = "Parent record created successfully";
                }
                else
                {
                    upsert.ErrorMsg = "Parent record updated successfully";
                }

                upsert.RecordId = Parent.ParentId.ToString();
            }
            catch (Exception ex)
            {
                upsert.ErrorMsg = ex.Message;
                //RecordException("Update Parent Error", ex);
            }

            return(upsert);
        }
Exemplo n.º 6
0
        public async Task <UpsertModel> UpsertPayment(UpsertMode mode, PaymentViewModel model)
        {
            var upsert = new UpsertModel();

            try
            {
                Activity activity;
                string   title;
                System.Text.StringBuilder builder;

                // Get Student
                var student = db.Students.Single(x => x.StudentId == model.StudentId);

                // get term
                var term = db.Terms.FirstOrDefault(x => x.TermId == model.TermId);

                // Apply changes
                Payment = model.ParseAsEntity(Payment);

                builder = new System.Text.StringBuilder();

                if (model.PaymentId == 0)
                {
                    student.Payments.Add(Payment);

                    if (term.IsCurrentTerm)
                    {
                        // incase student hasn't been promoted, promote. Carry on debt if any
                        if ((student.CurrentLevelId.HasValue && student.CurrentLevelId != Payment.ClassLevelId) || !student.CurrentLevelId.HasValue)
                        {
                            student.CurrentLevelId  = Payment.ClassLevelId;
                            db.Entry(student).State = System.Data.Entity.EntityState.Modified;
                        }

                        if (!student.CurrentTermId.HasValue || (student.CurrentTermId.HasValue && student.CurrentTermId != Payment.TermId))
                        {
                            student.CurrentTermId   = Payment.TermId;
                            db.Entry(student).State = System.Data.Entity.EntityState.Modified;
                        }
                    }


                    title = "Payment Recorded";
                    builder.Append("A Payment record has been made for: " + student.FullName).AppendLine();
                }
                else
                {
                    db.Entry(Payment).State = System.Data.Entity.EntityState.Modified;

                    title = "Payment Updated";
                    builder.Append("The following changes have been made to the Payment details");

                    if (mode == UpsertMode.Admin)
                    {
                        builder.Append(" (by the Admin)");
                    }

                    builder.Append(":").AppendLine();
                }

                await db.SaveChangesAsync();

                PaymentId = Payment.PaymentId;


                // change parent next reminder date
                if (!Payment.Student.NoParents)
                {
                    var parents = Payment.Student.Parents.Select(x => x.Parent);

                    DateTime?nextDate;

                    if (Payment.Student.HasOutstanding)
                    {
                        nextDate = Payment.Date.AddDays(21);
                    }
                    else
                    {
                        nextDate = null;
                    }

                    foreach (var parent in parents)
                    {
                        if (Payment.Term.IsCurrentTerm)
                        {
                            parent.RemindDate      = nextDate;
                            db.Entry(parent).State = System.Data.Entity.EntityState.Modified;
                        }
                    }
                }

                // Save activity now so we have a PaymentId. Not ideal, but hey
                activity        = CreateActivity(title, builder.ToString());
                activity.UserId = ServiceUserId;

                await db.SaveChangesAsync();

                if (model.PaymentId == 0)
                {
                    upsert.ErrorMsg = "Payment record created successfully";
                }
                else
                {
                    upsert.ErrorMsg = "Payment record updated successfully";
                }

                upsert.RecordId = Payment.PaymentId.ToString();
            }
            catch (Exception ex)
            {
                upsert.ErrorMsg = ex.Message;
                //RecordException("Update Payment Error", ex);
            }

            return(upsert);
        }
Exemplo n.º 7
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 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);
        }
Exemplo n.º 8
0
        public async Task <UpsertModel> UpsertStudent(UpsertMode mode, StudentViewModel model)
        {
            var upsert = new UpsertModel();

            try
            {
                Activity activity;
                string   title;
                System.Text.StringBuilder builder;

                // Apply changes
                Student = model.ParseAsEntity(Student);

                if (model.Enroll)
                {
                    var term = db.Terms.FirstOrDefault(p => p.IsCurrentTerm);
                    if (term != null)
                    {
                        Student.CurrentTermId = term.TermId;
                    }
                }

                builder = new System.Text.StringBuilder();

                if (model.StudentId == 0)
                {
                    db.Students.Add(Student);

                    title = "Student Added";
                    builder.AppendFormat("A Student record has been made for: {0} {1}", model.FirstName, model.LastName).AppendLine();
                }
                else
                {
                    db.Entry(Student).State = System.Data.Entity.EntityState.Modified;

                    title = "Student Updated";
                    builder.Append("The following changes have been made to the Student details");

                    if (mode == UpsertMode.Admin)
                    {
                        builder.Append(" (by the Admin)");
                    }

                    builder.Append(":").AppendLine();
                }

                await db.SaveChangesAsync();

                StudentId = Student.StudentId;

                if (model.Dp != null)
                {
                    UploadDp(model.Dp);
                }

                // 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.StudentId == 0)
                {
                    upsert.ErrorMsg = "Student record created successfully";
                }
                else
                {
                    upsert.ErrorMsg = "Student record updated successfully";
                }

                upsert.RecordId = Student.StudentId.ToString();
            }
            catch (Exception ex)
            {
                upsert.ErrorMsg = ex.Message;
                //RecordException("Update Student Error", ex);
            }

            return(upsert);
        }