public IActionResult CreateJobCard()
        {
            var         userClaim   = (ClaimsIdentity)User.Identity;
            var         userIdVal   = userClaim.Claims.FirstOrDefault <Claim>(c => c.Type == ClaimTypes.NameIdentifier);
            var         user        = _context.Users.FirstOrDefault <User>(u => u.ID == int.Parse(userIdVal.Value));
            UserJobCard userJobCard = new UserJobCard();

            userJobCard.User = user;
            return(View(userJobCard));
        }
        public IActionResult EditJobCard(UserJobCard userJobCard)
        {
            var jobCard = _context.JobCards.FirstOrDefault <JobCard>(j => j.ID == userJobCard.JobCard.ID);

            jobCard.Title       = userJobCard.JobCard.Title;
            jobCard.Description = userJobCard.JobCard.Description;
            //jobCard.Benefits = userJobCard.JobCard.Benefits;
            //jobCard.Achievements = userJobCard.JobCard.Achievements;
            //jobCard.Deliverables = userJobCard.JobCard.Deliverables;
            //jobCard.Requirements = userJobCard.JobCard.Requirements;

            //_context.JobCards.Update(jobCard);
            _context.Entry(jobCard).State = EntityState.Modified;
            _context.SaveChanges();

            if (Request.Form.Files.Count > 0)
            {
                var           dirPath = @"\images\jobcard\" + userJobCard.JobCard.ID;
                DirectoryInfo di      = Directory.CreateDirectory(hostingEnv.WebRootPath + $@"{dirPath}");
                long          size    = 0;

                foreach (var file in Request.Form.Files)
                {
                    var filename = ContentDispositionHeaderValue
                                   .Parse(file.ContentDisposition)
                                   .FileName
                                   .Trim('"');
                    filename = hostingEnv.WebRootPath + $@"{dirPath}\{filename}";
                    size    += file.Length;
                    using (FileStream fs = System.IO.File.Create(filename))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                    }
                }
            }
            return(RedirectToAction("UserProfile", new { id = userJobCard.User.ID }));
        }
        public IActionResult CreateJobCard(UserJobCard userJobCard)
        {
            userJobCard.JobCard.CreateOn   = DateTime.Now;
            userJobCard.JobCard.ModifiedOn = DateTime.Now;
            var user = _context.Users.FirstOrDefault <User>(u => u.ID == userJobCard.User.ID);

            userJobCard.JobCard.OwnerID        = user.ID;
            userJobCard.User                   = user;
            userJobCard.JobCard.ApprovedOn     = DateTime.Now;
            userJobCard.JobCard.VouchersPaidOn = DateTime.Now;

            _context.JobCards.Add(userJobCard.JobCard);
            _context.SaveChanges();
            if (Request.Form.Files.Count > 0)
            {
                var           dirPath = @"\images\jobcard\" + userJobCard.JobCard.ID;
                DirectoryInfo di      = Directory.CreateDirectory(hostingEnv.WebRootPath + $@"{dirPath}");
                long          size    = 0;

                foreach (var file in Request.Form.Files)
                {
                    var filename = ContentDispositionHeaderValue
                                   .Parse(file.ContentDisposition)
                                   .FileName
                                   .Trim('"');
                    filename = hostingEnv.WebRootPath + $@"{dirPath}\{filename}";
                    size    += file.Length;
                    using (FileStream fs = System.IO.File.Create(filename))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                    }
                }
            }

            return(RedirectToAction("UserProfile", new { id = userJobCard.User.ID }));
        }
        public IActionResult UserProfile(int id)
        {
            UserJobCard  userJobCard  = new UserJobCard();
            JobCardViews jobCardViews = new JobCardViews();
            var          user         = _context.Users.FirstOrDefault <User>(u => u.ID == id);


            // Setting Purchase , Balance and Total recomedations
            SetVoucherDetails(id);

            string birthdayString = user.DateOfBirth.ToString();
            // Save today's date.
            var today = DateTime.Today;

            // Calculate the age.
            var age = today.Year - user.DateOfBirth.Year;

            // Do stuff with it.
            if (user.DateOfBirth > today.AddYears(-age))
            {
                age--;
            }

            ViewBag.AgeString = age.ToString();

            var userClaim = (ClaimsIdentity)User.Identity;
            var userIdVal = userClaim.Claims.FirstOrDefault <Claim>(c => c.Type == ClaimTypes.NameIdentifier);
            var jobCardId = _context.JobCards.FirstOrDefault <JobCard>(u => u.OwnerID == user.ID);

            //Add to implement view of the job
            if (user.ID != int.Parse(userIdVal.Value))
            {
                jobCardViews.JobCardID = jobCardId.ID;
                jobCardViews.ViewedBy  = int.Parse(userIdVal.Value);
                jobCardViews.ViewedOn  = DateTime.Now;
                _context.JobCardViews.Add(jobCardViews);
                _context.SaveChanges();
            }

            if (jobCardId != null)
            {
                ViewBag.ViewJobCount = _context.JobCardViews.Count(t => t.JobCard.ID == jobCardId.ID);
            }

            if (userIdVal != null)
            {
                ViewBag.UserId = userIdVal.Value;
                if (int.Parse(userIdVal.Value) == user.ID)
                {
                    ViewBag.LoggedInUser = true;
                }
                else
                {
                    ViewBag.LoggedInUser = false;
                }

                var recommendedUser = _context.Recommendations.FirstOrDefault <Recommend>(b => b.UserID == id && b.RecommendedBy == int.Parse(userIdVal.Value));
                if (recommendedUser != null)
                {
                    ViewBag.IsUserRecommended = true;
                }
                else
                {
                    ViewBag.IsUserRecommended = false;
                }

                var blockedUser = _context.BlockedUsers.FirstOrDefault <BlockedUser>(b => b.UserID == id && b.BlockedBy == int.Parse(userIdVal.Value));
                if (blockedUser != null)
                {
                    ViewBag.IsUserBlocked = true;
                }
                else
                {
                    ViewBag.IsUserBlocked = false;
                }

                var favouriteUser = _context.Favourites.FirstOrDefault <Favourite>(b => b.UserID == id && b.FavouriteBy == int.Parse(userIdVal.Value));
                if (favouriteUser != null)
                {
                    ViewBag.IsSetAsFavourite = true;
                }
                else
                {
                    ViewBag.IsSetAsFavourite = false;
                }
            }

            //var userPicVal = userClaim.Claims.FirstOrDefault<Claim>(c => c.Type == ClaimTypes.Webpage);
            //if (userPicVal != null)
            //{
            //    ViewBag.ProfilePhoto = userPicVal.Value;
            //}

            DateTime todayDate = DateTime.Now;
            TimeSpan ts        = todayDate - user.CreateOn;

            if (ts.Days >= 10)
            {
                //then dont show tag
                ViewBag.NewUserTag = false;
            }
            else
            {
                ViewBag.NewUserTag = true;
            }


            var dirPath = @"\images\Profile\" + id;

            if (Directory.Exists(hostingEnv.WebRootPath + $@"{dirPath}"))
            {
                string[] fileNames = Directory.GetFiles(hostingEnv.WebRootPath + $@"{dirPath}");
                if (fileNames.Length > 0)
                {
                    ViewBag.ProfilePhoto = "/images/Profile/" + id.ToString() + "/" + fileNames[0].Substring(fileNames[0].LastIndexOf(@"\") + 1);
                }
                else
                {
                    ViewBag.ProfilePhoto = "/images/profile_img.jpg";
                }
            }
            else
            {
                ViewBag.ProfilePhoto = "/images/profile_img.jpg";
            }

            var jobCard = _context.JobCards.FirstOrDefault <JobCard>(j => j.OwnerID == id);

            if (jobCard != null)
            {
                ViewBag.IsNewJobCard    = (todayDate - jobCard.CreateOn).Days <= 10;
                ViewBag.JobCardCreateOn = jobCard.CreateOn.ToString("dd-MM-yyyy");
                dirPath = @"\images\jobcard\" + jobCard.ID;
                if (Directory.Exists(hostingEnv.WebRootPath + $@"{dirPath}"))
                {
                    string[] fileNames = Directory.GetFiles(hostingEnv.WebRootPath + $@"{dirPath}");

                    if (fileNames.Length > 0)
                    {
                        ViewBag.FileNames = fileNames;
                    }
                }
            }
            userJobCard.JobCard = jobCard;
            userJobCard.User    = user;
            return(View(userJobCard));
        }
        public IActionResult UpdateUser(UserJobCard updateUser)
        {
            var sessionId   = Request.Form["ddlInterest"].ToString();
            var userSession = _context.UserSessions.FirstOrDefault <UserSession>(us => us.SessionID == int.Parse(sessionId) && us.UserID == updateUser.User.ID);

            if (userSession == null)
            {
                _context.UserSessions.Add(new UserSession()
                {
                    SessionID = int.Parse(sessionId), UserID = updateUser.User.ID
                });
            }
            var user         = _context.Users.FirstOrDefault <User>(u => u.ID == updateUser.User.ID);
            var userPassword = user.Password;

            user          = updateUser.User;
            user.Password = userPassword;


            _context.SaveChanges();

            updateUser.JobCard.CreateOn   = DateTime.Now;
            updateUser.JobCard.ModifiedOn = DateTime.Now;
            updateUser.JobCard.OwnerID    = updateUser.User.ID;
            updateUser.User = updateUser.User;
            updateUser.JobCard.ApprovedOn     = DateTime.Now;
            updateUser.JobCard.VouchersPaidOn = DateTime.Now;
            string statusMessageStr = string.Empty;

            if (Request.Form["rdoMessage"].ToString() == "2")
            {
                statusMessageStr = Request.Form["txtMessageTemplate"].ToString();
            }
            else if (Request.Form["rdoMessage"].ToString() == "0")
            {
                statusMessageStr = Request.Form["sp0_message"].ToString();
            }
            else if (Request.Form["rdoMessage"].ToString() == "1")
            {
                statusMessageStr = Request.Form["sp1_message"].ToString();
            }
            updateUser.JobCard.StatusMessage = statusMessageStr;

            _context.JobCards.Add(updateUser.JobCard);
            _context.SaveChanges();
            if (Request.Form.Files.Count > 0)
            {
                var           dirPath = @"\images\jobcard\" + updateUser.JobCard.ID;
                DirectoryInfo di      = Directory.CreateDirectory(hostingEnv.WebRootPath + $@"{dirPath}");
                long          size    = 0;

                foreach (var file in Request.Form.Files)
                {
                    var filename = ContentDispositionHeaderValue
                                   .Parse(file.ContentDisposition)
                                   .FileName
                                   .Trim('"');
                    filename = hostingEnv.WebRootPath + $@"{dirPath}\{filename}";
                    size    += file.Length;
                    using (FileStream fs = System.IO.File.Create(filename))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                    }
                }



                _context.SaveChanges();
                ViewBag.ErrorMessage = "";
            }

            return(RedirectToAction("UserProfile", "Account", new { id = updateUser.User.ID }));
        }