public async Task<ActionResult> DeleteRow(int id)
        {

            //---------------------------------------------------------
            //We add the record for real-time update - DELETE APPLIES TO ADMIN ONLY
            //Get the admin id
            string username = HttpContext.User.Identity.Name;
            string AdminId = db.Users.Where(x => x.UserName == username).Select(x => x.Id).FirstOrDefault();

            //Now check the record
            RT rt = db.RT.Where(x => x.AdminId == AdminId).FirstOrDefault();

            if (rt == null)
            {
                rt = new RT();
                rt.AdminId = AdminId;
                rt.LastModified = DateTime.UtcNow;
                db.Entry(rt).State = EntityState.Added;
            }
            else
            {
                rt.LastModified = DateTime.UtcNow;
                db.Entry(rt).State = EntityState.Modified;
            }
            //End of realtime update - DELETE APPLIES TO ADMIN ONLY
            //-----------------------------------------------------------

            HeatTreat heatTreat = await db.HeatTreat.FindAsync(id);
            db.HeatTreat.Remove(heatTreat);
            await db.SaveChangesAsync();

            var currentImage = Path.Combine(Server.MapPath("~/Attachments"),
                id + ".png");

            try
            {
                System.IO.File.Delete(currentImage);
            }
            catch (Exception ex) { }

            currentImage = Path.Combine(Server.MapPath("~/Attachments"),
                id + "_2.png");

            try
            {
                System.IO.File.Delete(currentImage);
            }
            catch (Exception ex) { }

            currentImage = Path.Combine(Server.MapPath("~/Attachments"),
                id + "_3.png");



            try
            {
                System.IO.File.Delete(currentImage);
            }
            catch (Exception ex) { }




            currentImage = Path.Combine(Server.MapPath("~/Attachments"),
                id + "_4.png");

            try
            {
                System.IO.File.Delete(currentImage);
            }
            catch (Exception ex) { }

            currentImage = Path.Combine(Server.MapPath("~/Attachments"),
                id + "_5.png");

            try
            {
                System.IO.File.Delete(currentImage);
            }
            catch (Exception ex) { }

            return Content("Ok");
        }
        public async Task<ActionResult> AddRow(HeatTreat heatTreat, HttpPostedFileBase uImage, HttpPostedFileBase uImage2, HttpPostedFileBase uImage3, HttpPostedFileBase uImage4, HttpPostedFileBase uImage5, string Role)
        {
            if (Role.Equals("User"))
            {
                if (
                    heatTreat.JobCardNumber == null &&
                      heatTreat.Temperature == null &&
                      heatTreat.Load == null &&
                      heatTreat.StationNumber == null
                    )
                {
                    ModelState.AddModelError("NoData", "Please enter some data");
                }
            }
            if (Role.Equals("Admin"))
            {
                if (
                      heatTreat.FirstName == null &&
                   heatTreat.JobCardNumber == null &&
                     heatTreat.Temperature == null &&
                     heatTreat.Load == null &&
                     heatTreat.StationNumber == null
                   )
                {
                    ModelState.AddModelError("NoData", "Please enter some data");
                }

            }
            heatTreat.Date = DateTime.Now;
            heatTreat.Image = heatTreat.Image2 = heatTreat.Image3 = heatTreat.Image4 = heatTreat.Image5 = false;

            if (ModelState.IsValid)
            {
                //---------------------------------------------------------
                //We add the record for real-time update - EDIT APPLIES TO USER AND ADMIN
                //Get the admin id

                if (Role.Equals("User"))
                {
                    int OprId = heatTreat.OperatorsId.GetValueOrDefault();

                    //Now check the record
                    RT rt = db.RT.Where(x => x.OperatorsId == OprId).FirstOrDefault();

                    if (rt == null)
                    {
                        rt = new RT();
                        rt.OperatorsId = OprId;
                        rt.LastModified = DateTime.UtcNow;
                        db.Entry(rt).State = EntityState.Added;
                    }
                    else
                    {
                        rt.LastModified = DateTime.UtcNow;
                        db.Entry(rt).State = EntityState.Modified;
                    }
                }

                if (Role.Equals("Admin"))
                {
                    string username = HttpContext.User.Identity.Name;
                    string AdminId = db.Users.Where(x => x.UserName == username).Select(x => x.Id).FirstOrDefault();

                    //Now check the record
                    RT rt = db.RT.Where(x => x.AdminId == AdminId).FirstOrDefault();

                    if (rt == null)
                    {
                        rt = new RT();
                        rt.AdminId = AdminId;
                        rt.LastModified = DateTime.UtcNow;
                        db.Entry(rt).State = EntityState.Added;
                    }
                    else
                    {
                        rt.LastModified = DateTime.UtcNow;
                        db.Entry(rt).State = EntityState.Modified;
                    }
                }

                //End of realtime update - EDIT APPLIES TO USER AND ADMIN
                //-----------------------------------------------------------

                db.HeatTreat.Add(heatTreat);
                await db.SaveChangesAsync();
                ViewBag.Result = "DataSaved";

                bool CorrectImage = true;
                if (uImage != null)
                {
                    var fileName = Path.GetFileName(uImage.FileName);
                    string[] SplitFileName = fileName.Split('.');


                    if (SplitFileName.Count() < 2)
                    {
                        //ModelState.AddModelError("uImage", "No extension");
                        CorrectImage = false;
                    }
                    if (!(SplitFileName[SplitFileName.Count() - 1].Equals("jpg")
                        ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("jpeg")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("png")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("ico")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("bmp")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("gif")

                        )
                        )
                    {
                        //ModelState.AddModelError("uImage", "File uImage Required");
                        CorrectImage = false;
                    }

                    if (CorrectImage)
                    {
                        var path = Path.Combine(Server.MapPath("~/Attachments"), heatTreat.HeatTreatId + ".png");
                        uImage.SaveAs(path);

                        heatTreat.Image = true;
                        db.Entry(heatTreat).State = EntityState.Modified;
                        await db.SaveChangesAsync();

                    }

                }

                //2
                CorrectImage = true;
                if (uImage2 != null)
                {
                    var fileName = Path.GetFileName(uImage2.FileName);
                    string[] SplitFileName = fileName.Split('.');


                    if (SplitFileName.Count() < 2)
                    {
                        //ModelState.AddModelError("uImage", "No extension");
                        CorrectImage = false;
                    }
                    if (!(SplitFileName[SplitFileName.Count() - 1].Equals("jpg")
                        ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("jpeg")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("png")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("ico")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("bmp")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("gif")

                        )
                        )
                    {
                        //ModelState.AddModelError("uImage", "File uImage Required");
                        CorrectImage = false;
                    }

                    if (CorrectImage)
                    {
                        var path = Path.Combine(Server.MapPath("~/Attachments"), heatTreat.HeatTreatId + "_2.png");
                        uImage2.SaveAs(path);

                        heatTreat.Image2 = true;
                        db.Entry(heatTreat).State = EntityState.Modified;
                        await db.SaveChangesAsync();

                    }

                }

                //3
                CorrectImage = true;
                if (uImage3 != null)
                {
                    var fileName = Path.GetFileName(uImage3.FileName);
                    string[] SplitFileName = fileName.Split('.');


                    if (SplitFileName.Count() < 2)
                    {
                        //ModelState.AddModelError("uImage", "No extension");
                        CorrectImage = false;
                    }
                    if (!(SplitFileName[SplitFileName.Count() - 1].Equals("jpg")
                        ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("jpeg")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("png")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("ico")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("bmp")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("gif")

                        )
                        )
                    {
                        //ModelState.AddModelError("uImage", "File uImage Required");
                        CorrectImage = false;
                    }

                    if (CorrectImage)
                    {
                        var path = Path.Combine(Server.MapPath("~/Attachments"), heatTreat.HeatTreatId + "_3.png");
                        uImage3.SaveAs(path);

                        heatTreat.Image3 = true;
                        db.Entry(heatTreat).State = EntityState.Modified;
                        await db.SaveChangesAsync();

                    }

                }
                //4
                CorrectImage = true;
                if (uImage4 != null)
                {
                    var fileName = Path.GetFileName(uImage4.FileName);
                    string[] SplitFileName = fileName.Split('.');


                    if (SplitFileName.Count() < 2)
                    {
                        //ModelState.AddModelError("uImage", "No extension");
                        CorrectImage = false;
                    }
                    if (!(SplitFileName[SplitFileName.Count() - 1].Equals("jpg")
                        ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("jpeg")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("png")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("ico")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("bmp")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("gif")

                        )
                        )
                    {
                        //ModelState.AddModelError("uImage", "File uImage Required");
                        CorrectImage = false;
                    }

                    if (CorrectImage)
                    {
                        var path = Path.Combine(Server.MapPath("~/Attachments"), heatTreat.HeatTreatId + "_4.png");
                        uImage4.SaveAs(path);

                        heatTreat.Image4 = true;
                        db.Entry(heatTreat).State = EntityState.Modified;
                        await db.SaveChangesAsync();

                    }

                }

                //5
                CorrectImage = true;
                if (uImage5 != null)
                {
                    var fileName = Path.GetFileName(uImage5.FileName);
                    string[] SplitFileName = fileName.Split('.');


                    if (SplitFileName.Count() < 2)
                    {
                        //ModelState.AddModelError("uImage", "No extension");
                        CorrectImage = false;
                    }
                    if (!(SplitFileName[SplitFileName.Count() - 1].Equals("jpg")
                        ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("jpeg")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("png")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("ico")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("bmp")
                         ||
                        SplitFileName[SplitFileName.Count() - 1].Equals("gif")

                        )
                        )
                    {
                        //ModelState.AddModelError("uImage", "File uImage Required");
                        CorrectImage = false;
                    }

                    if (CorrectImage)
                    {
                        var path = Path.Combine(Server.MapPath("~/Attachments"), heatTreat.HeatTreatId + "_5.png");
                        uImage5.SaveAs(path);

                        heatTreat.Image5 = true;
                        db.Entry(heatTreat).State = EntityState.Modified;
                        await db.SaveChangesAsync();

                    }

                }

                int tempid = heatTreat.OperatorsId.GetValueOrDefault();
                string tempname = heatTreat.FirstName;

                heatTreat = new HeatTreat();
                ModelState.Clear();

                if (Role.Equals("User"))
                {
                    heatTreat.OperatorsId = tempid;
                    heatTreat.FirstName = tempname;
                }

            }
            else
            {
                ViewBag.Result = "DataError";
            }

            ViewBag.Role = Role;
            ViewBag.OperatorId = heatTreat.OperatorsId;
            ViewBag.OperatorName = heatTreat.FirstName;
            ViewBag.Columns = await db.ColumnNames.OrderBy(x => x.Order).Select(x => x.Label).ToListAsync();
            ViewBag.ColumnsFull = await db.ColumnNames.OrderBy(x => x.Order).ToListAsync();
            ViewBag.ColumnsToHideUser = await db.UserHideColumns.Where(x => x.OperatorsId == heatTreat.OperatorsId).ToListAsync();


            return View("User", heatTreat);
        }
        public async Task<ActionResult> EditRow(List<HeatTreat> heatTreat, int index)
        {
            if (ModelState.IsValid)
            {
                //---------------------------------------------------------
                //We add the record for real-time update - EDIT APPLIES TO ADMIN ONLY
                //Get the admin id
                string username = HttpContext.User.Identity.Name;
                string AdminId = db.Users.Where(x => x.UserName == username).Select(x => x.Id).FirstOrDefault();

                //Now check the record
                RT rt = db.RT.Where(x => x.AdminId == AdminId).FirstOrDefault();

                if (rt == null)
                {
                    rt = new RT();
                    rt.AdminId = AdminId;
                    rt.LastModified = DateTime.UtcNow;
                    db.Entry(rt).State = EntityState.Added;
                }
                else
                {
                    rt.LastModified = DateTime.UtcNow;
                    db.Entry(rt).State = EntityState.Modified;
                }
                //End of realtime update - EDIT APPLIES TO ADMIN ONLY
                //-----------------------------------------------------------

                db.Entry(heatTreat[0]).State = EntityState.Modified;
                await db.SaveChangesAsync();
                ViewBag.Result = "DataSaved";
            }
            else
            {
                ViewBag.Result = "DataError";
            }

            ViewBag.num = 0;


            return PartialView("RowDetail", heatTreat);
        }
        public async Task<ActionResult> Embed(string jobCardNo, string firstName, string stationNumber, string temp, string load)
        {
            HeatTreat heatTreat = new HeatTreat();

            //Inject data to the model
            heatTreat.JobCardNumber = jobCardNo;
            heatTreat.FirstName = firstName;
            heatTreat.StationNumber = stationNumber;
            heatTreat.Temperature = temp;
            heatTreat.Load = load;

            heatTreat.Image = heatTreat.Image2 = heatTreat.Image3 = heatTreat.Image4 = heatTreat.Image5 = false;

            heatTreat.Date = DateTime.Now;

            //Validate the data
            if (
                      heatTreat.FirstName == null &&
                   heatTreat.JobCardNumber == null &&
                     heatTreat.Temperature == null &&
                     heatTreat.Load == null &&
                     heatTreat.StationNumber == null
                   )
            {
                ViewBag.Result = "DataError";
                ViewBag.ResultDetail = "Please enter some data.";

                goto SkipSaving;

            }



            //Validate the first name
            Operators op = await db.Operators.Where(x => x.Number == firstName).FirstOrDefaultAsync();

            if (op == null)
            {
                ViewBag.Result = "DataError";
                ViewBag.ResultDetail = "Operator Number not found.";

                goto SkipSaving;
            }

            //Change the values
            heatTreat.FirstName = op.Name;
            heatTreat.OperatorsId = op.OperatorsId;


            try
            {
                //---------------------------------------------------------
                //We add the record for real-time update  EMBED
                RT rt = db.RT.Where(x => x.bitDevice == true).FirstOrDefault();

                if (rt == null)
                {
                    rt = new RT();
                    rt.bitDevice = true;
                    rt.LastModified = DateTime.UtcNow;
                    db.Entry(rt).State = EntityState.Added;
                }
                else
                {
                    rt.LastModified = DateTime.UtcNow;
                    db.Entry(rt).State = EntityState.Modified;
                }
                //End of realtime update - EMBED
                //-----------------------------------------------------------

                db.HeatTreat.Add(heatTreat);
                await db.SaveChangesAsync();
                ViewBag.Result = "DataSaved";

            }
            catch (Exception ex)
            {
                ViewBag.Result = "DataError";
                ViewBag.ResultDetail = "Invalid data found.";

            }

        SkipSaving:

            ViewBag.Role = "Embed";
            ViewBag.Columns = await db.ColumnNames.OrderBy(x => x.Order).Select(x => x.Label).ToListAsync();
            ViewBag.ColumnsFull = await db.ColumnNames.OrderBy(x => x.Order).ToListAsync();
            ViewBag.ColumnsToHideUser = await db.UserHideColumns.Where(x => x.OperatorsId == 0).ToListAsync();

            return View("User", heatTreat);
        }