// GET: Admin/Signatures/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                Response.StatusCode = 404;
                return(View("SignaturesNotFound"));
            }

            var signature = await _context.Signatures.FindAsync(id);

            if (signature == null)
            {
                Response.StatusCode = 404;
                return(View("SignaturesNotFound"));
            }
            SignatureEditViewModel models = new SignatureEditViewModel()
            {
                Id = signature.Id,
                SignaturePhotoExists = signature.SignaturePhoto,
                UserId           = signature.UserId,
                Degree           = signature.Degree,
                JobsSignatorieId = signature.JobsSignatorieId,
                Status           = signature.Status
            };

            ViewData["DegreeList"]       = new SelectList(DegreeList(), "Name", "Name", signature.Degree);
            ViewData["JobsSignatorieId"] = new SelectList(_context.JobsSignatories, "Id", "Name", signature.JobsSignatorieId);
            ViewData["ValidUnValidList"] = new SelectList(ValidUnValidHelpr.ValidUnValidHelprList(), "Value", "Name", signature.Status);

            ViewData["UserId"] = new SelectList(_context.Users, "Id", "FullName", signature.UserId);
            return(View(models));
        }
        public async Task <IActionResult> Edit(int id, SignatureEditViewModel signature)
        {
            if (id != signature.Id)
            {
                Response.StatusCode = 404;
                return(View("SignaturesNotFound"));
            }

            if (ModelState.IsValid)
            {
                string filenameForEdit = null;
                string uniqFileName    = null;

                if (signature.SignaturePhoto != null && signature.SignaturePhoto.Length > 0)
                {
                    string filePathForDelete = Path.Combine(_ihostingEnvironment.WebRootPath,
                                                            "img/signatures", signature.SignaturePhotoExists);
                    System.IO.File.Delete(filePathForDelete);

                    if (IsFileValidate(signature.SignaturePhoto.FileName))
                    {
                        string uplouadsFolder = Path.Combine(_ihostingEnvironment.WebRootPath, "img/signatures");
                        uniqFileName = Guid.NewGuid().ToString() + "_" + signature.SignaturePhoto.FileName;
                        string filePath = Path.Combine(uplouadsFolder, uniqFileName);

                        using (var fileStream = new FileStream(filePath, FileMode.Create))
                        {
                            signature.SignaturePhoto.CopyTo(fileStream);
                        }
                    }
                    else
                    {
                        ViewBag.msg                  = "الصور المسموح بها يجب ان تكون بمتداد : " + "png , jpeg , jpg , gif , bmp ";
                        ViewData["DegreeList"]       = new SelectList(DegreeList(), "Name", "Name", signature.Degree);
                        ViewData["JobsSignatorieId"] = new SelectList(_context.JobsSignatories, "Id", "Name", signature.JobsSignatorieId);

                        ViewData["ValidUnValidList"] = new SelectList(ValidUnValidHelpr.ValidUnValidHelprList(), "Value", "Name", signature.Status);

                        ViewData["UserId"] = new SelectList(_context.Users, "Id", "FullName", signature.UserId);
                        return(View(signature));
                    }
                }
                filenameForEdit = uniqFileName == null ? signature.SignaturePhotoExists : uniqFileName;

                Signature signatureforSave = new Signature()
                {
                    UserId           = signature.UserId,
                    SignaturePhoto   = filenameForEdit,
                    Id               = id,
                    Degree           = signature.Degree,
                    JobsSignatorieId = signature.JobsSignatorieId,
                    Status           = signature.Status
                };
                if (!SignatureExists(id, signature.UserId))
                {
                    if (SignatureExists(signature.UserId))
                    {
                        ViewData["SignatureExists"]  = "لايمكن اضافة توقيع آخر / يملك توقيع مسبقا!!";
                        ViewData["DegreeList"]       = new SelectList(DegreeList(), "Name", "Name", signature.Degree);
                        ViewData["JobsSignatorieId"] = new SelectList(_context.JobsSignatories, "Id", "Name", signature.JobsSignatorieId);

                        ViewData["ValidUnValidList"] = new SelectList(ValidUnValidHelpr.ValidUnValidHelprList(), "Value", "Name", signature.Status);

                        ViewData["UserId"] = new SelectList(_context.Users, "Id", "FullName", signature.UserId);
                        return(View(signature));
                    }
                }
                _context.Update(signatureforSave);
                await _context.SaveChangesAsync();



                return(RedirectToAction(nameof(Index)));
            }
            ViewData["DegreeList"]       = new SelectList(DegreeList(), "Name", "Name", signature.Degree);
            ViewData["JobsSignatorieId"] = new SelectList(_context.JobsSignatories, "Id", "Name", signature.JobsSignatorieId);

            ViewData["ValidUnValidList"] = new SelectList(ValidUnValidHelpr.ValidUnValidHelprList(), "Value", "Name", signature.Status);

            ViewData["UserId"] = new SelectList(_context.Users, "Id", "FullName", signature.UserId);
            return(View(signature));
        }