public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            IdentityCardEditViewModel identityCard = new IdentityCardEditViewModel();

            identityCard.IdentityCard = await _context.IdentityCards.Include(c => c.BloodGroup)
                                        .Include(c => c.Designation)
                                        .FirstOrDefaultAsync(m => m.Id == id);

            if (identityCard == null)
            {
                return(NotFound());
            }

            return(View(identityCard));
        }
        public async Task <IActionResult> Edit(int id, IdentityCardEditViewModel viewModel)
        {
            if (id != viewModel.IdentityCard.Id)
            {
                return(NotFound());
            }


            string uniqueFileName          = null;
            string uniqueFileNameSignature = null;

            //string uniqueFileNameAuthorizedSignature = null;
            //string uniqueFileNameCompanyLogo = null;



            //&& viewModel.ImagePathOfUserSignature != null
            if (viewModel.ImagePathOfUser != null)
            {
                string uplaodsFolder = Path.Combine(_webHostEnvironment.WebRootPath, "image/user/");
                uniqueFileName = Guid.NewGuid().ToString() + "_" + viewModel.ImagePathOfUser.FileName;
                filePath       = Path.Combine(uplaodsFolder, uniqueFileName);

                //string uplaodsFolderSignature = Path.Combine(_webHostEnvironment.WebRootPath, "image/sig/");
                //uniqueFileNameSignature = Guid.NewGuid().ToString() + "_" + viewModel.ImagePathOfUserSignature.FileName;
                //filePathSignature = Path.Combine(uplaodsFolderSignature, uniqueFileNameSignature);

                //string uplaodsFolderAuthSignature = Path.Combine(_webHostEnvironment.WebRootPath, "image/auth/");
                //uniqueFileNameAuthorizedSignature = "9536f8a1-d3ad-41b6-8448-e748bb33f589_authsign.jpg";

                //string uplaodsFolderLogo = Path.Combine(_webHostEnvironment.WebRootPath, "image/logo/");
                //uniqueFileNameCompanyLogo = "68837796-1410-4966-a0bb-562e4b44c854_Logo.jpg";


                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    viewModel.ImagePathOfUser.CopyTo(stream);
                }

                //using (var stream = new FileStream(filePathSignature, FileMode.Create))
                //{
                //    viewModel.ImagePathOfUserSignature.CopyTo(stream);
                //}
            }


            IdentityCard model = new IdentityCard();


            model = await _context.IdentityCards.Include(c => c.BloodGroup)
                    .Include(c => c.Designation)
                    .FirstOrDefaultAsync(m => m.Id == id);



            if (viewModel.IdentityCard.ValidationStartDate == null)
            {
                viewModel.IdentityCard.Id          = model.Id;
                viewModel.IdentityCard.Name        = model.Name;
                viewModel.IdentityCard.Designation = model.Designation;
                viewModel.IdentityCard.BloodGroup  = model.BloodGroup;
                viewModel.IdentityCard.CardNumber  = model.CardNumber;


                ModelState.AddModelError(string.Empty, "Enter valid start date");
                return(View(viewModel));
            }

            if (viewModel.IdentityCard.ValidationEndDate == null)
            {
                viewModel.IdentityCard.Id          = model.Id;
                viewModel.IdentityCard.Name        = model.Name;
                viewModel.IdentityCard.Designation = model.Designation;
                viewModel.IdentityCard.BloodGroup  = model.BloodGroup;
                viewModel.IdentityCard.CardNumber  = model.CardNumber;

                ModelState.AddModelError(string.Empty, "Enter valid end date");
                return(View(viewModel));
            }

            if (viewModel.IdentityCard.ValidationEndDate < viewModel.IdentityCard.ValidationStartDate)
            {
                viewModel.IdentityCard.Id          = model.Id;
                viewModel.IdentityCard.Name        = model.Name;
                viewModel.IdentityCard.Designation = model.Designation;
                viewModel.IdentityCard.BloodGroup  = model.BloodGroup;
                viewModel.IdentityCard.CardNumber  = model.CardNumber;


                ModelState.AddModelError(string.Empty, "End date is not valid");
                return(View(viewModel));
            }
            else
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        //IdentityCard model = new IdentityCard();
                        //model = await _context.IdentityCards.Include(c => c.BloodGroup)
                        //    .Include(c => c.Designation)
                        //    .FirstOrDefaultAsync(m => m.Id == id);

                        model.ValidationStartDate = viewModel.IdentityCard.ValidationStartDate;
                        model.ValidationEndDate   = viewModel.IdentityCard.ValidationEndDate;

                        if (viewModel.ImagePathOfUser != null)
                        {
                            model.ImagePathOfUser = uniqueFileName;
                        }

                        if (viewModel.ImagePathOfUserSignature != null)
                        {
                            model.ImagePathOfUserSignature = uniqueFileNameSignature;
                        }



                        _context.Update(model);
                        var save = await _context.SaveChangesAsync();
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        if (!IdentityCardExists(viewModel.IdentityCard.Id))
                        {
                            return(NotFound());
                        }
                        else
                        {
                            throw;
                        }
                    }

                    return(RedirectToAction(nameof(Index)));
                }
            }

            return(View(viewModel));
        }