public async Task <JsonResult> Create([Bind(Include = "Id,Nomination_Type,Nominator_Employee_Number,Nominator_Employee_Full_Name,Nomination_Reason,Nominee_Employee_Number,Nominee_Emp_or_Team_Name,Submission_Date")] EOM_Nomination eOM_Nominations)
        {
            Dictionary <string, string> dict = new Dictionary <string, string>();

            eOM_Nominations.Submission_Date = DateTime.Now;

            if (ModelState.IsValid && EntryInModel(eOM_Nominations))
            {
                db.EOM_Nomination.Add(eOM_Nominations);
                await db.SaveChangesAsync();

                // Send Email to nominator and Josh
                handleNotification(eOM_Nominations);

                // Send success message
                dict.Add("Message", "Success");
                return(Json(dict, JsonRequestBehavior.AllowGet));
            }
            dict.Add("Message", "Failure");
            return(Json(dict, JsonRequestBehavior.AllowGet));
        }
        private void handleNotification(EOM_Nomination eom, string statMsg = null)
        {
            // Get nominator
            var     nominator = db.UltiPro.AsEnumerable().Select(user => user).Where(user => user.employee_number == eom.Nominator_Employee_Number);
            UltiPro u         = nominator.ToList()[0];


            Mail   m = new Mail();
            string nominationType;

            // nominator email address
            string nominatorEmail = String.Format("{0}.{1}@lowndes-law.com", u.first_name, u.last_name);
            string eeucid         = String.Format("{0}@lowndes-law.com", u.eecudfield01);


            // Email for single nomination
            if (statMsg == null)
            {
                // Send email to nomination submitter
                string messageToNominator = String.Format("Thank you for your nomination of {0}. This email is just a confirmation that your nomination was recorded successfully", eom.Nominee_Emp_or_Team_Name);
                m.SendMessage(nominatorEmail, eeucid, "Thank you for your Applause, Applause Nomination", messageToNominator);

                // Build msg for bccRecipients
                statMsg        = String.Format("Nominated By: {0}\nNomination Reason: {1}\nNominee ID: {2}\nNominee Name: {3}\n", eom.Nominator_Employee_Full_Name, eom.Nomination_Reason, eom.Nominator_Employee_Number, eom.Nominee_Emp_or_Team_Name);
                nominationType = "New Applause, Applause Nomination";
            }
            // Email for group nomination
            else
            {
                string messageToNominator = String.Format("Thank you for your teamwork award nomination. This email is a confirmation that your nomination was recorded successfully");
                m.SendMessage(nominatorEmail, eeucid, "Thank you for your Teamwork Award Nomination", messageToNominator);

                nominationType = "New Teamwork Award Nomination";
            }

            string[] bccRecipients = new string[] { "*****@*****.**", "*****@*****.**" };
            string   mainRecipient = "*****@*****.**";

            m.SendMessage(mainRecipient, bccRecipients, eeucid, nominationType, statMsg);
        }
        public bool EntryInModel(EOM_Nomination nominee)
        {
            string empID    = nominee.Nominee_Employee_Number;
            string teamName = nominee.Nominee_Emp_or_Team_Name;

            // If empID supplied, assume that submission is a user
            if (empID != null && teamName != null)
            {
                var usr = db.UltiPro.AsEnumerable().Select(user => user).Where(user => user.employee_number == empID);
                return((usr.Count() == 1) ? true : false);
            }
            // If empID is null and teamName supplied, assume submission is a team
            else if (empID == null && teamName != null)
            {
                var teamm = db.UltiPro.AsEnumerable().Select(team => team).Where(user => user.org_level_1 == teamName || user.org_level_2 == teamName || user.org_level_3 == teamName);
                return((teamm.Any()) ? true : false);
            }
            else
            {
                return(false);
            }
        }