public async Task <IActionResult> Edit(Guid id, [Bind("Id,ApplicationUserId,Title,Skills,Description,Image,Youtube,Views,RequiredDays,DateOfRecord,PricingType,SkillCategoryType")] FreelancerReadyService freelancerReadyService, IFormFile myfile)
        {
            if (id != freelancerReadyService.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    freelancerReadyService.Image = await UserFile.UploadeNewImageAsync(freelancerReadyService.Image,
                                                                                       myfile, _environment.WebRootPath, Properties.Resources.Images, 500, 500);


                    if (freelancerReadyService.Youtube != null)
                    {
                        int position = freelancerReadyService.Youtube.IndexOf("=");
                        freelancerReadyService.Youtube = freelancerReadyService.Youtube.Substring(position + 1);
                    }


                    _context.Update(freelancerReadyService);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FreelancerReadyServiceExists(freelancerReadyService.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ApplicationUserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", freelancerReadyService.ApplicationUserId);
            return(View(freelancerReadyService));
        }
        public async Task <IActionResult> Create([Bind("Id,ApplicationUserId,Title,Skills,Description,Image,Youtube,Views,RequiredDays,DateOfRecord,PricingType,SkillCategoryType")] FreelancerReadyService freelancerReadyService, IFormFile myfile)
        {
            if (ModelState.IsValid)
            {
                freelancerReadyService.Image = await UserFile.UploadeNewImageAsync(freelancerReadyService.Image,
                                                                                   myfile, _environment.WebRootPath, Properties.Resources.Images, 500, 500);


                freelancerReadyService.Id = Guid.NewGuid();
                if (freelancerReadyService.Youtube != null)
                {
                    int position = freelancerReadyService.Youtube.IndexOf("=");
                    freelancerReadyService.Youtube = freelancerReadyService.Youtube.Substring(position + 1);
                }
                freelancerReadyService.ApplicationUserId = _userManager.GetUserId(User);
                _context.Add(freelancerReadyService);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ApplicationUserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", freelancerReadyService.ApplicationUserId);
            return(View(freelancerReadyService));
        }
        // GET: FreelancerReadyServices/Details/5
        public async Task <IActionResult> Details(Guid?id)
        {
            //------------------------------ratings-----------------------------
            var p = 0;
            var c = 0;
            var q = 0;
            var e = 0;
            var d = 0;
            var r = 0;

            var freelancerratings = _context.FreelancerRatings.Where(f => f.FreelancerReadyServiceId == id);

            foreach (var item in freelancerratings)
            {
                p += item.Professionalism;
                c += item.Communication;
                q += item.Quality;
                e += item.Experience;
                d += item.Delivery;
                r += item.RehirePossibility;
            }

            if (freelancerratings.Count() > 0)
            {
                p = p / freelancerratings.Count();
                c = c / freelancerratings.Count();
                q = q / freelancerratings.Count();
                e = e / freelancerratings.Count();
                d = d / freelancerratings.Count();
                r = r / freelancerratings.Count();
                ViewData["rating"] = (p + c + q + e + d + r) / 6;
            }


            //------------------------------ratings-----------------------------


            if (id == null)
            {
                return(NotFound());
            }
            FreelancerReadyService FreelancerReadyService = await _context.FreelancerReadyServices
                                                            .Include(f => f.ApplicationUser)
                                                            .SingleOrDefaultAsync(m => m.Id == id);

            FreelancerReadyService.Views += 1;
            _context.Update(FreelancerReadyService);
            _context.SaveChanges();

            if (FreelancerReadyService.PricingType == PricingType.Fiver)
            {
                ViewData["price"] = 5;
            }
            else if (FreelancerReadyService.PricingType == PricingType.Tenth)
            {
                ViewData["price"] = 10;
            }
            else if (FreelancerReadyService.PricingType == PricingType.Fifteenth)
            {
                ViewData["price"] = 15;
            }
            else if (FreelancerReadyService.PricingType == PricingType.Twenty)
            {
                ViewData["price"] = 20;
            }
            else if (FreelancerReadyService.PricingType == PricingType.TwenyFive)
            {
                ViewData["price"] = 25;
            }


            FreelancerReadyServiceViewModel freelancerReadyServiceVM = new FreelancerReadyServiceViewModel()
            {
                FreelancerReadyService = await _context.FreelancerReadyServices
                                         .Include(f => f.ApplicationUser)
                                         .SingleOrDefaultAsync(m => m.Id == id),

                FreelancerReadyServiceExtensions = _context.FreelancerReadyServiceExtensions.Where(f => f.FreelancerReadyServiceId == id).OrderByDescending(a => a.Id),
            };

            return(View(freelancerReadyServiceVM));
        }