public ActionResult AddUnsaved(UnsavedContactViewModel model)
        {

            if (!ModelState.IsValid)
            {
                return View("unsavedContacts", model);
            }

            var contacts = model.Contacts;
            foreach (var c in contacts)
            {
                var newContact = new Contact
                                 {
                                     FirstName = c.FirstName,
                                     LastName = c.LastName,
                                     Email = c.Email,
                                     PhoneNumber = c.PhoneNumber
                                 };

                GetUserContacts(GetCurrentUserId()).Add(newContact);
                _db.SaveChanges();

            }

            return RedirectToAction("Index");
        }
        public ActionResult SendEventsInvitation([Bind(Include =
            "ParticipantsEmails,EventDate,EventId,SendRemainder,ReminderDate,ListDate")] InvitationViewModel model)
        {
            var id = model.EventId;

            if (!ModelState.IsValid)
            {
                return View(ReturnInvitationModel(id));
            }

            //ToDo: change list and remainder dates to swiss time to be used for sending email

            var eventForInvitation = GetEvent(id);
            eventForInvitation.ListDate =
                // ReSharper disable once PossibleInvalidOperationException
                model.ListDate = ConvertDateTime.ConvertStartDateToRightZoneTime((DateTime) model.ListDate);

            if (model.ReminderDate != null)
            {
                eventForInvitation.ReminderDate =
                    ConvertDateTime.ConvertStartDateToRightZoneTime((DateTime) model.ReminderDate);
                Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("{ From Invitation controller sending invitation } Remainder date is on " + eventForInvitation.ReminderDate));
            }

            /*
             * This is used to check time on the server 
             * when this is deployed
             */

            Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("{ From Invitation controller sending invitation } List date is on " + eventForInvitation.ListDate));


            //Check if invitations can still be sent
            var notPassed = _service.EventHasNotPassed(eventForInvitation);
            if (!notPassed)
            {
                return View("_CantInvite", eventForInvitation);
            }



            var unsavedContacts = new UnsavedContactViewModel();
            EmailInformation emailInfo = null;
            var allSaved = false;
            var contacts = new List<Contact>();
            var emails = new List<EmailInformation>();

            //loop through emails
            var emailList = model.ParticipantsEmails.Split(',').ToList();

            foreach (var participantEmail in emailList)
            {
                var email = _service.RemoveBrackets(participantEmail);

                //save new participant
                SaveParticipantInDb(email, eventForInvitation);


                #region Create and send Email

                emailInfo = ComposeEmailInfo(eventForInvitation, email);
                emails.Add(emailInfo);

                //Send Invitation Email
                try
                {
                    PostalEmailManager.SendEmail(emailInfo, new InvitationEmail());

                    //todo: this is to be removed before deployment for production
                    Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Email sent to " + emailInfo.ParticipantEmail));

                    if (model.SendRemainder)
                    {
                        var remainderDate = Service.GetRemanderDate(eventForInvitation);
                        JobManager.ScheduleRemainderEmail(emails, (DateTime)remainderDate);

                        //todo: this is to be removed before deployment for production
                        Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("remainder is set at " + remainderDate));
                    }
                }
                catch (Exception exception)
                {
                    Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
                    return RedirectToAction("Error");
                }


                #endregion

                #region after sending email, save unsaved contacts

                var contactEmails = _contactsController.GetUserContacts(UserId);
                allSaved = contactEmails.Any(c => c.Email == email);

                if (allSaved)
                {
                    continue;
                }
                var contact = new Contact { Email = email };
                contacts.Add(contact);
                unsavedContacts.Contacts = contacts;

                #endregion

            }

            #region Scheduling List email

            // start participant list summary scheduler
            var listDate = Service.GetListDate(eventForInvitation);
            JobManager.ScheduleParticipantListEmail(emailInfo, listDate);

            #endregion

            //redirect to details if all contacts are saved
            if (allSaved)
            {
                Response.Cookies.Add(new HttpCookie("invitationCookie", "Invitations were sent."));

                return RedirectToAction("Details", "Events", new { id });
            }

            //Let user save his contacts return view with list of unsaved contacts
            unsavedContacts.EventId = eventForInvitation.Id;
            TempData["model"] = unsavedContacts;           //Pass list to SaveEmails action
            return RedirectToAction("SaveEmails");
        }