public async Task <IActionResult> ProcessAfteBulkEntry()
        {
            var cards = _context.IdentityCards.ToList().Where(c => c.CardNumber == null);

            var identitycardInfo = _context.IdentityCards.ToList().Where(c => c.CardNumber != null);
            var lastcardNumber   = identitycardInfo.LastOrDefault()?.CardNumber;

            IdentityCardViewModel viewModel = new IdentityCardViewModel();

            foreach (var card in cards)
            {
                card.CardNumber  = viewModel.GetCardNumber(lastcardNumber);
                card.CompanyName = "Interlink Technologies Ltd.";
                card.CardInfo    = "This card should be used by card holder only. If this card is found ownerless, please, return" +
                                   "it to the issuing authority. This card is not transferable to anybody.";
                card.CompanyAddress  = "Office No. 801 (7th Floor) 1205, 185 Sonargaon Road, Dhaka";
                card.CompanyLogoPath = "";
                card.ImagePathOfAuthorizedSignature = "";
                _context.Update(card);
                var save = await _context.SaveChangesAsync();

                lastcardNumber = viewModel.GetCardNumber(lastcardNumber);

                ViewBag.Info = "Process Completed";
            }

            return(View("Excel"));
        }
        public async Task <IActionResult> ExpiredUserCards()
        {
            var identityCards = await _context.IdentityCards.Where(c => c.ValidationEndDate < DateTime.Now)
                                .Include(c => c.BloodGroup)
                                .Include(c => c.Designation).ToListAsync();


            IdentityCardViewModel model = new IdentityCardViewModel();

            model.IdentityCards = identityCards;
            ViewBag.Title       = "Expired Card Users";

            return(View("ValidatedUsers", model));
        }
        public async Task <IActionResult> CardEdit(int id, [Bind("Id,CardCategoryId,Name,DesignationId,Department,BloodGroupId,CardNumber,DateOfBirth,ImagePathOfUser,ImagePathOfUserSignature,ImagePathOfAuthorizedSignature,CompanyName,CompanyAddress,CompanyLogoPath,CardInfo,ValidationStartDate,ValidationEndDate,IssueDate")] IdentityCardViewModel viewModel)
        {
            if (id != viewModel.IdentityCard.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    IdentityCard identityCard = new IdentityCard();
                    viewModel.IdentityCard.CardCategoryId                 = identityCard.CardCategoryId;
                    viewModel.IdentityCard.Name                           = identityCard.Name;
                    viewModel.IdentityCard.DesignationId                  = identityCard.DesignationId;
                    viewModel.IdentityCard.Department                     = identityCard.Department;
                    viewModel.IdentityCard.BloodGroupId                   = identityCard.BloodGroupId;
                    viewModel.IdentityCard.CardNumber                     = identityCard.CardNumber;
                    viewModel.IdentityCard.DateOfBirth                    = identityCard.DateOfBirth;
                    viewModel.IdentityCard.ImagePathOfUser                = identityCard.ImagePathOfUser;
                    viewModel.IdentityCard.ImagePathOfUserSignature       = identityCard.ImagePathOfUserSignature;
                    viewModel.IdentityCard.ImagePathOfAuthorizedSignature = identityCard.ImagePathOfAuthorizedSignature;
                    viewModel.IdentityCard.CompanyName                    = identityCard.CompanyName;
                    viewModel.IdentityCard.CompanyAddress                 = identityCard.CompanyAddress;
                    viewModel.IdentityCard.CompanyLogoPath                = identityCard.CompanyLogoPath;
                    viewModel.IdentityCard.CardInfo                       = identityCard.CardInfo;
                    viewModel.IdentityCard.ValidationStartDate            = identityCard.ValidationStartDate;
                    viewModel.IdentityCard.ValidationEndDate              = identityCard.ValidationEndDate;


                    _context.Update(viewModel.IdentityCard);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!IdentityCardExists(viewModel.IdentityCard.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CardCategoryId"] = new SelectList(_context.CardCategories, "Id", "Id", viewModel.IdentityCard.CardCategoryId);
            ViewData["DesignationId"]  = new SelectList(_context.Designations, "Id", "Id", viewModel.IdentityCard.DesignationId);
            return(View(viewModel));
        }
        public async Task <IActionResult> UserRequestForCard()
        {
            var identityCards = await _context.IdentityCards.Where(c => c.ValidationEndDate == null)
                                .Include(c => c.BloodGroup)
                                .Include(c => c.Designation).ToListAsync();


            IdentityCardViewModel model = new IdentityCardViewModel();

            model.IdentityCards = identityCards;
            ViewBag.Title       = "Users Requested For Card ";

            return(View("ValidatedUsers", model));
        }
        public async Task <IActionResult> Index()
        {
            var identityCards = await _context.IdentityCards
                                .Include(c => c.BloodGroup)
                                .Include(c => c.Designation).ToListAsync();


            IdentityCardViewModel model = new IdentityCardViewModel
            {
                IdentityCards = identityCards
            };

            ViewBag.Message = TempData["Message"];
            return(View(model));
        }
        public IActionResult Create()
        {
            IdentityCardViewModel model = new IdentityCardViewModel();

            ViewData["BloodGroups"]    = new SelectList(_context.BloodGroups, "Id", "Name");
            ViewData["Designations"]   = new SelectList(_context.Designations, "Id", "Title");
            ViewData["Departments"]    = new SelectList(_context.Departments, "Id", "Name");
            ViewData["CardCategories"] = new SelectList(_context.CardCategories, "Id", "CategoryName");

            var identitycardInfo = _context.IdentityCards.ToList();
            var cardNumber       = identitycardInfo.LastOrDefault()?.CardNumber;

            model.CardNumber = model.GetCardNumber(cardNumber);
            return(View(model));
        }
        public async Task <IActionResult> CardEdit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            IdentityCardViewModel viewModel = new IdentityCardViewModel();

            viewModel.IdentityCard = await _context.IdentityCards.FindAsync(id);

            if (viewModel.IdentityCard == null)
            {
                return(NotFound());
            }
            ViewData["BloodGroupId"]   = new SelectList(_context.BloodGroups, "Id", "Id", viewModel.IdentityCard.BloodGroupId);
            ViewData["CardCategoryId"] = new SelectList(_context.CardCategories, "Id", "Id", viewModel.IdentityCard.CardCategoryId);
            ViewData["DesignationId"]  = new SelectList(_context.Designations, "Id", "Id", viewModel.IdentityCard.DesignationId);
            return(View(viewModel));
        }
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

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

            IdentityCardViewModel model = new IdentityCardViewModel();

            model.IdentityCard = identityCard;

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

            return(View(model));
        }
        public async Task <IActionResult> Create(IdentityCardViewModel identityCardViewModel)
        {
            ViewData["BloodGroups"]    = new SelectList(_context.BloodGroups, "Id", "Name");
            ViewData["Designations"]   = new SelectList(_context.Designations, "Id", "Title");
            ViewData["Departments"]    = new SelectList(_context.Departments, "Id", "Name");
            ViewData["CardCategories"] = new SelectList(_context.CardCategories, "Id", "CategoryName");

            if (identityCardViewModel.DateOfBirth > DateTime.Now)
            {
                ModelState.AddModelError("DateOfBirth", "Date of birth is not valid");
            }
            if (ModelState.IsValid)
            {
                //string uniqueFileName = null;
                //string uniqueFileNameSignature = null;
                //string uniqueFileNameAuthorizedSignature = null;
                //string uniqueFileNameCompanyLogo = null;

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

                //    string uplaodsFolderSignature = Path.Combine(_webHostEnvironment.WebRootPath, "image/sig/");
                //    uniqueFileNameSignature = Guid.NewGuid().ToString() + "_" + identityCardViewModel.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))
                //    {
                //        identityCardViewModel.ImagePathOfUser.CopyTo(stream);
                //    }

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

                //}

                identityCardViewModel.IdentityCard.Name           = identityCardViewModel.Name;
                identityCardViewModel.IdentityCard.DesignationId  = identityCardViewModel.DesignationId;
                identityCardViewModel.IdentityCard.Department     = identityCardViewModel.Department;
                identityCardViewModel.IdentityCard.CardCategoryId = identityCardViewModel.CardCategoryId;
                identityCardViewModel.IdentityCard.BloodGroupId   = identityCardViewModel.BloodGroupId;
                identityCardViewModel.IdentityCard.CardNumber     = identityCardViewModel.CardNumber;
                identityCardViewModel.IdentityCard.DateOfBirth    = identityCardViewModel.DateOfBirth;
                //identityCardViewModel.IdentityCard.ImagePathOfUser = uniqueFileName;
                //identityCardViewModel.IdentityCard.ImagePathOfUserSignature = uniqueFileNameSignature;
                //identityCardViewModel.IdentityCard.ImagePathOfAuthorizedSignature = uniqueFileNameAuthorizedSignature;
                //identityCardViewModel.IdentityCard.CompanyLogoPath = uniqueFileNameCompanyLogo;



                _context.Add(identityCardViewModel.IdentityCard);
                var saved = await _context.SaveChangesAsync();

                if (saved > 0)
                {
                    TempData["Message"] = "Saved Successfully";
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(identityCardViewModel));
        }