Ejemplo n.º 1
0
        public ActionResult Nominate(string TrainingId, string UserId)
        {
            try
            {
                int User = Convert.ToInt32(Encrypter.Decode(UserId));
                // int User = 0;
                string ServerName = AppValue.GetFromMailAddress("ServerName");
                int    TId        = Convert.ToInt32(Encrypter.Decode(TrainingId));
                DSRCManagementSystemEntities1 obj = new DSRCManagementSystemEntities1();
                var instructor   = obj.Trainings.Where(x => x.TrainingId == TId && x.InstructorId == User).Select(o => o.InstructorId).FirstOrDefault();
                var Training     = obj.Trainings.Where(x => x.TrainingId == TId).Select(o => o).FirstOrDefault();
                var NomitionOne  = obj.TrainingNominations.Where(x => x.UserId == User && x.TrainingId == TId).Select(x => x).ToList();
                int NomineeCount = NomitionOne.Count();
                if (TId == 0)
                {
                    ViewBag.Null = "Null";
                }
                else if (instructor != null)
                {
                    ViewBag.Instructor = "Instructor";
                }
                else if (Training.NumberOfNominated == Training.SeatingCapacity + 2)
                {
                    ViewBag.NoSeat = "NoSeat";
                }
                else if (NomineeCount != 0)
                {
                    ViewBag.Already = "Already";
                }
                else
                {
                    //int userId = int.Parse(Session["UserID"].ToString());
                    var email = System.Web.HttpContext.Current.Application["UserName"].ToString();

                    DSRCManagementSystemEntities1 db = new DSRCManagementSystemEntities1();
                    var empid = db.Users.Where(x => x.UserID == User).Select(o => o.EmpID).FirstOrDefault();
                    //int? emp = Convert.ToInt32(empid);
                    DSRCManagementSystemEntities1 obf = new DSRCManagementSystemEntities1();
                    //var EMP = obf.Users.Where(x => x.UserID == userId).Select(o => o.EmpID).FirstOrDefault();


                    int k = TId;
                    DSRCManagementSystemEntities1 objdb = new DSRCManagementSystemEntities1();
                    //var id = db.Users.Where(x => x.UserID == userId).Select(o => o.EmpID).FirstOrDefault();
                    //int? value = Convert.ToInt32(id);
                    var empname = objdb.Users.Where(x => x.UserID == User).Select(o => o.FirstName + " " + o.LastName ?? "").FirstOrDefault();
                    //  context.Authors.Where(a => a.Books.Any(b => b.BookID == bookID)).ToList();
                    var val          = objdb.TrainingNominations.Where(x => x.UserId == User && x.TrainingId == k).Select(o => o.TrainingId).FirstOrDefault();
                    int?instructorid = db.Trainings.Where(x => x.InstructorId == User).Select(o => o.InstructorId).FirstOrDefault();
                    var technology   = objdb.Trainings.Where(x => x.TrainingId == k).Select(o => o.TechnologyId).FirstOrDefault();
                    var LevelId      = db.Trainings.Where(x => x.TrainingId == TId).Select(x => x.LevelId).FirstOrDefault();
                    int?InsID        = db.Trainings.Where(x => x.TrainingId == TId).Select(o => o.InstructorId).FirstOrDefault();


                    //var trainwidgets = db.TrainingWeightages.CreateObject();
                    //trainwidgets.Trainee = user;
                    //trainwidgets.Instructor = InsID;
                    //trainwidgets.LevelId = LevelId;
                    //db.TrainingWeightages.AddObject(trainwidgets);
                    //db.SaveChanges();

                    DSRCManagementSystem.TrainingNomination nom = new DSRCManagementSystem.TrainingNomination();
                    nom.TrainingId = TId;
                    //nom.EmpId = Convert.ToInt32(empid);
                    nom.EmpId          = empid;
                    nom.UserId         = User;
                    nom.EmpName        = empname;
                    nom.TechnologyId   = technology;
                    nom.EmailId        = email;
                    nom.NominationFlag = true;
                    nom.CompletionFlag = false;
                    nom.IsActive       = true;
                    objdb.AddToTrainingNominations(nom);
                    objdb.SaveChanges();


                    var Techref = db.Trainings.FirstOrDefault(o => o.TrainingId == k);

                    string   Tid   = k.ToString();
                    string   tname = Techref.TrainingName;
                    DateTime d1    = Convert.ToDateTime(Techref.ScheduledDate);
                    string   d     = d1.ToShortDateString();
                    string   stime = Techref.StartTime;
                    string   etime = Techref.EndTime;

                    string username = db.Users.Where(o => o.UserID == Techref.InstructorId).Select(o => o.FirstName + " " + (o.LastName ?? "")).FirstOrDefault();

                    var    userdetails = db.Users.FirstOrDefault(o => o.UserID == User);
                    string MailID      = userdetails.EmailAddress;


                    string EmpName = userdetails.FirstName + " " + userdetails.LastName ?? "";


                    //string mailMessage = MailBuilder.NominationConfirmation(EmpName, Tid, tname, d, stime, etime, username);
                    var check  = objdb.EmailTemplates.Where(x => x.TemplatePurpose == "Nomination Confirmation").Select(o => o.EmailTemplateID).FirstOrDefault();
                    var folder = objdb.EmailTemplates.Where(o => o.TemplatePurpose == "Nomination Confirmation").Select(x => x.TemplatePath).FirstOrDefault();
                    if ((check != null) && (check != 0))
                    {
                        var objNominationConfirmation = (from p in db.EmailPurposes.Where(x => x.EmailPurposeName == "Nomination Confirmation")
                                                         join q in db.EmailTemplates on p.EmailTemplateID equals q.EmailTemplateID
                                                         select new DSRCManagementSystem.Models.Email
                        {
                            To = p.To,
                            CC = p.CC,
                            BCC = p.BCC,
                            Subject = p.Subject,
                            Template = q.TemplatePath
                        }).FirstOrDefault();

                        var    company = db.Master_ApplicationSettings.Where(x => x.AppKey == "Company Name").Select(o => o.AppValue).FirstOrDefault();
                        string TemplatePathNominationConfirmation = Server.MapPath(objNominationConfirmation.Template);
                        string htmlNominationConfirmation         = System.IO.File.ReadAllText(TemplatePathNominationConfirmation);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#Empname", EmpName);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#TrainingId", Tid);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#TrainingName", tname);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#ScheduledDate", d);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#start", stime);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#end", etime);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#Instructor", username);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#ServerName", ServerName);
                        htmlNominationConfirmation = htmlNominationConfirmation.Replace("#CompanyName", company);
                        //string ServerName = WebConfigurationManager.AppSettings["SeverName"];
                        var logo = CommonLogic.getLogoPath();

                        if (ServerName != "http://*****:*****@dsrc.co.in");
                            //MailIds.Add("*****@*****.**");
                            //MailIds.Add("*****@*****.**");
                            //MailIds.Add("*****@*****.**");
                            //MailIds.Add("*****@*****.**");
                            //MailIds.Add("*****@*****.**");
                            //MailIds.Add("*****@*****.**");

                            string EmailAddress = "";

                            foreach (string mail in MailIds)
                            {
                                EmailAddress += mail + ",";
                            }

                            EmailAddress = EmailAddress.Remove(EmailAddress.Length - 1);

                            Task.Factory.StartNew(() =>
                            {
                                //var logo = db.Master_ApplicationSettings.Where(x => x.AppID == 7).Select(x => x).FirstOrDefault();
                                //  DsrcMailSystem.MailSender.SendMail(null, objNominationConfirmation.Subject + " - Test Mail Please Ignore", null, htmlNominationConfirmation + " - Testing Plaese ignore", "*****@*****.**", EmailAddress, Server.MapPath(logo.AppValue.ToString()));
                                DsrcMailSystem.MailSender.SendMail(null, objNominationConfirmation.Subject + " - Test Mail Please Ignore", null, htmlNominationConfirmation + " - Testing Plaese ignore", "*****@*****.**", EmailAddress, Server.MapPath(logo.ToString()));
                            });
                        }
                        else
                        {
                            Task.Factory.StartNew(() =>
                            {
                                // var logo = db.Master_ApplicationSettings.Where(x => x.AppID == 7).Select(x => x).FirstOrDefault();
                                //  DsrcMailSystem.MailSender.SendMail(null, objNominationConfirmation.Subject, null, htmlNominationConfirmation, "*****@*****.**", MailID, Server.MapPath(logo.AppValue.ToString()));
                                DsrcMailSystem.MailSender.SendMail(null, objNominationConfirmation.Subject, null, htmlNominationConfirmation, "*****@*****.**", MailID, Server.MapPath(logo.ToString()));
                                //DsrcMailSystem.MailSender.LDSendMail(null, "L & D - Training Nomination Confirmation", null, mailMessage, "*****@*****.**", MailID, Server.MapPath("~/Content/Template/images/logo.png"));
                            });
                        }
                    }
                    else
                    {
                        //string ServerName = WebConfigurationManager.AppSettings["SeverName"];
                        ExceptionHandlingController.TemplateMissing("Nomination Confirmation", folder, ServerName);
                    }

                    //int k = Trainingid;

                    var value1 = obf.Trainings.Where(x => x.TrainingId == TId).Select(o => o).FirstOrDefault();
                    value1.Flag = false;
                    obf.SaveChanges();

                    var No_Of_Nominees_Ref = db.Trainings.FirstOrDefault(o => o.TrainingId == TId);

                    int?No_Of_Nominations = No_Of_Nominees_Ref.NumberOfNominated;
                    No_Of_Nominees_Ref.NumberOfNominated = No_Of_Nominations + 1;

                    db.SaveChanges();
                }
            }
            catch (Exception Ex)
            {
                string actionName     = this.ControllerContext.RouteData.Values["action"].ToString();
                string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString();
                ExceptionHandlingController.ExceptionDetails(Ex, actionName, controllerName);
            }
            return(View());
        }