// GET: RoleBasedSignatures/Edit/5



        public FileContentResult GetDigitalSignature(int Id, int Width, int Height)
        {
            RoleBasedSignature roleBasedSignature = db.RoleBasedSignatures.Where(w => w.Id == Id).FirstOrDefault();
            //Read image back from file and create thumbnail from it
            var imageFile = Path.Combine(Server.MapPath("~/Content/Uploads/Originals"), roleBasedSignature.FileAddressInfo);

            try
            {
                using (var srcImage = Image.FromFile(imageFile))
                    using (var newImage = new Bitmap(Width, Height))
                        using (var graphics = Graphics.FromImage(newImage))
                            using (var stream = new MemoryStream())
                            {
                                if (roleBasedSignature != null && roleBasedSignature.SignatureData != null && roleBasedSignature.SignatureMimeType != 0)
                                {
                                    graphics.SmoothingMode     = SmoothingMode.AntiAlias;
                                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                                    graphics.PixelOffsetMode   = PixelOffsetMode.HighQuality;
                                    graphics.DrawImage(srcImage, new Rectangle(0, 0, Width, Height));
                                    newImage.Save(stream, ImageFormat.Png);
                                    return(File(stream.ToArray(), roleBasedSignature.SignatureMimeType.ToString()));
                                }
                                else
                                {
                                    return(null);
                                }
                            }
            }catch (Exception ex)
            {
                return(null);
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            RoleBasedSignature roleBasedSignature = db.RoleBasedSignatures.Find(id);

            db.RoleBasedSignatures.Remove(roleBasedSignature);
            // db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "Id,RoleName,SignatureMimeType,SignatureData,FileAddressInfo,IsAcive,CreateTime")] RoleBasedSignature roleBasedSignature)
 {
     if (ModelState.IsValid)
     {
         db.Entry(roleBasedSignature).State = EntityState.Modified;
         //  db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(roleBasedSignature));
 }
        // GET: RoleBasedSignatures/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RoleBasedSignature roleBasedSignature = db.RoleBasedSignatures.Find(id);

            if (roleBasedSignature == null)
            {
                return(HttpNotFound());
            }
            return(View(roleBasedSignature));
        }
        public ActionResult Create(RoleBasedSignature roleBasedSignature, FormCollection collection, HttpPostedFileBase image)
        {
            MembershipHelp mHelp = new MembershipHelp(); var role = mHelp.logingUserRole(User.Identity.Name);
            var            roleId    = db.RoleMasters.Where(w => w.Name == role).Select(s => s.Id).FirstOrDefault();
            var            canCreate = (from m in db.MenuInfoes join rm in db.RoleMenuMappings on m.Id equals rm.MenuInfoId where m.MenuURL.Contains("RoleBasedSignatures") && rm.RoleId == roleId select rm.CanCreate).FirstOrDefault();

            if (!canCreate)
            {
                return(RedirectToAction("Index"));
            }


            var roleBasedSignatueUpdate = db.RoleBasedSignatures.Where(w => w.RoleName == roleBasedSignature.RoleName).ToList();

            foreach (var rbsu in roleBasedSignatueUpdate)
            {
                rbsu.IsAcive         = false;
                db.Entry(rbsu).State = EntityState.Modified;
                db.SaveChanges();
            }



            if (image != null)
            {
                //attach the uploaded image to the object before saving to Database
                roleBasedSignature.SignatureMimeType = image.ContentLength;
                roleBasedSignature.SignatureData     = new byte[image.ContentLength];
                image.InputStream.Read(roleBasedSignature.SignatureData, 0, image.ContentLength);

                // To Get the Max Id
                int countrbs = db.RoleBasedSignatures.Count();
                int maxId    = 0;
                if (countrbs > 0)
                {
                    maxId = db.RoleBasedSignatures.Max(m => m.Id) + 1;
                }
                else
                {
                    maxId = 1;
                }

                string   FileWhole      = image.FileName;
                string[] SplitFileWhole = FileWhole.Split('\\');

                int LastPartOfFile = SplitFileWhole.Count() - 1;
                //Save image to file
                var filename = maxId.ToString() + "_" + roleBasedSignature.RoleName + "_" + SplitFileWhole[LastPartOfFile];
                roleBasedSignature.FileAddressInfo = filename;

                var    filePathOriginal      = Server.MapPath("~/Content/Uploads/Originals");
                var    filePathThumbnail     = Server.MapPath("~/Content/Uploads/Thumbnails");
                string savedFileName         = Path.Combine(filePathOriginal, filename);
                string UploadedfileExtension = Path.GetExtension(image.FileName);
                if (System.IO.File.Exists(savedFileName))
                {
                    System.IO.File.Delete(savedFileName);
                }
                image.SaveAs(savedFileName);

                // back up into external drive
                try
                {
                    var    ExDrive = db.TestCallls.Select(s => s.value).FirstOrDefault();
                    string externalLocationAddress = ExDrive + fileStoreCreateFolderName.getFolderName();

                    bool exists = System.IO.Directory.Exists(externalLocationAddress);
                    if (!exists)
                    {
                        System.IO.Directory.CreateDirectory(externalLocationAddress);
                    }
                    string externalFileName = Path.Combine(externalLocationAddress, filename);
                    bool   fileExist        = System.IO.File.Exists(externalFileName);
                    if (fileExist)
                    {
                        Random r = new Random();
                        // Later to be indetified by the sequence which got start in between 900000 to 900100
                        string ExistExternalFileName = Path.Combine(externalLocationAddress, r.Next(900000, 900100).ToString() + "_" + filename);
                        image.SaveAs(ExistExternalFileName);
                    }
                    else
                    {
                        string ExistExternalFileName = Path.Combine(externalLocationAddress, filename);
                        image.SaveAs(ExistExternalFileName);
                    }
                }
                catch (Exception ex)
                {
                }
                // back up into external drive


                roleBasedSignature.CreateTime = DateTime.Now;



                // Saving Longing Credential
                LoginInfoModel logingInfoModel = new LoginInfoModel();
                PopulateLoginInfoCredencial populateLoginInfoCredencial = new PopulateLoginInfoCredencial(logingInfoModel);
                logingInfoModel = populateLoginInfoCredencial.getLoginInfoCredencial();
                if (!populateLoginInfoCredencial.ValidateIPv4(logingInfoModel.LoginIp))
                {
                    return(RedirectToAction("Login", "Account"));
                }
                logingInfoModel.UsedModel    = "RoleBasedSignature";
                logingInfoModel.TypeOfAction = TypeOfAction.Insert;
                logingInfoModel.Data         = Newtonsoft.Json.JsonConvert.SerializeObject(roleBasedSignature);
                logingInfoModel.SysDate      = DateTime.Now;
                db.LoginInfoModels.Add(logingInfoModel);
                db.SaveChanges();
                // Saving Longing Credential
                //Save model object to database
                db.RoleBasedSignatures.Add(roleBasedSignature);
                db.SaveChanges();


                return(RedirectToAction("Index"));
            }
            return(View(roleBasedSignature));
        }