public async Task <ActionResult> PostFreelancer(FreelancerViewModel vm)
        {
            string res = User.Claims.First(x => x.Type == "UserId").Value;

            int id = int.Parse(res);

            vm.UserId = id;

            var freelancer = new Domain.Entities.Freelancer()
            {
                UserForeignKey = id, PayHourly = vm.PayHourly
            };
            await freelancerService.AddAsync(freelancer);

            await clientService.AddAsync(vm.CompanyName, id);

            var user = await userService.GetAsync(id);

            var token = await tokenService.GenerateToken(user, appSettings.JWT_Secret, vm.Password);

            //Update freelancerId and skillId of Skills
            var skillsUsers = vm.SkillUsers.Select(c => new SkillUser {
                FreelancerId = user.Freelancer.Id, SkillId = c.Skill.Id
            }).ToList();
            await skillService.AddRangeAsync(skillsUsers);

            if (token == "")
            {
                return(BadRequest());
            }


            return(Ok(new { token }));
        }
        public async Task <IActionResult> FreelancerWalletAsync()
        {
            UserViewModel userViewModel = new UserViewModel();
            string        userId        = RegisterModel.registeredUser;
            var           freelancer    = await _context.Freelancer
                                          .FirstOrDefaultAsync(m => m.freelancerId == userId);

            var address = await _context.Address
                          .FirstOrDefaultAsync(m => m.userId == userId);

            var expertise = await _context.Expertise
                            .FirstOrDefaultAsync(m => m.freelancerId == userId);

            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.Id == userId);

            var wallet = _context.Wallet.FirstOrDefault(m => m.userId == userId);
            FreelancerViewModel model = new FreelancerViewModel();

            model.freelancerId = freelancer.freelancerId;
            model.lastName     = user.lastName;
            model.firstName    = user.firstName;
            model.photo        = freelancer.photo;
            model.wallet       = wallet;
            userViewModel.FreelancerViewModel = model;
            return(View(userViewModel));
        }
        public async Task <IActionResult> ViewJob()
        {
            string        jobId         = Request.Form["jobId"].ToString();
            UserViewModel userViewModel = new UserViewModel();
            string        userId        = User.GetUserId();
            var           freelancer    = await _context.Freelancer
                                          .FirstOrDefaultAsync(m => m.freelancerId == userId);

            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.Id == userId);

            var job                   = _context.Job.FirstOrDefault(m => m.jobId == jobId);
            var customerUser          = _context.Users.FirstOrDefault(m => m.Id == job.customerId);
            FreelancerViewModel model = new FreelancerViewModel();

            //var customer = _context.Customer.FirstOrDefault(m => m.customerId == job.customerId);
            model.freelancerId = freelancer.freelancerId;
            model.lastName     = user.lastName;
            model.firstName    = user.firstName;

            model.photo = freelancer.photo;
            userViewModel.FreelancerViewModel           = model;
            userViewModel.customerViewModel             = new CustomerViewModel();
            userViewModel.customerViewModel.firstName   = customerUser.firstName;
            userViewModel.customerViewModel.lastName    = customerUser.lastName;
            userViewModel.customerViewModel.phoneNumber = customerUser.PhoneNumber;
            userViewModel.job = job;
            return(View(userViewModel));
        }
Beispiel #4
0
        public ActionResult FreelancerProfile(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Person p = db.People.FirstOrDefault(x => x.PersonId == id);

            if (p == null)
            {
                return(HttpNotFound());
            }
            AspNetUser aspNetUser = db.AspNetUsers.FirstOrDefault(x => x.Id == p.User_AccountID);
            Freelancer freelancer = db.Freelancers.FirstOrDefault(f => f.FreelancerId == p.PersonId);
            var        Fskills    = db.FreelancerSkills.Where(s => s.FreelancerId == freelancer.FreelancerId);

            FreelancerViewModel freelancerViewModel = new FreelancerViewModel();

            freelancerViewModel.Person          = p;
            freelancerViewModel.AspNetUser      = aspNetUser;
            freelancerViewModel.Freelancer      = freelancer;
            freelancerViewModel.FreelancerSkill = Fskills;

            return(View(freelancerViewModel));
        }
        // GET: Customers
        public async Task <IActionResult> Index()
        {
            UserViewModel userViewModel = new UserViewModel();
            string        userId        = User.GetUserId();
            var           customer      = await _context.Customer
                                          .FirstOrDefaultAsync(m => m.customerId == userId);

            var address = await _context.Address
                          .FirstOrDefaultAsync(m => m.userId == userId);

            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.Id == userId);

            var job = _context.Job.Where(m => m.customerId == userId);
            FreelancerViewModel      freelancer = new FreelancerViewModel();
            List <ProposalViewModel> proposals  = new List <ProposalViewModel>();
            ProposalViewModel        proposal   = new ProposalViewModel();

            foreach (var item in job)
            {
                var prop = _context.Proposal.Where(m => m.jobId == item.jobId);
                if (prop != null)
                {
                    foreach (var i in prop)
                    {
                        var userr       = _context.Users.FirstOrDefault(m => m.Id == i.freelancerId);
                        var freelancer1 = _context.Freelancer.FirstOrDefault(m => m.freelancerId == i.freelancerId);
                        freelancer.freelancerId = item.freelancerId;
                        freelancer.firstName    = userr.firstName;
                        freelancer.lastName     = userr.lastName;
                        freelancer.email        = userr.Email;
                        freelancer.phoneNumber  = freelancer1.phoneNumber;
                        freelancer.title        = freelancer.category;
                        proposal.freelancer     = freelancer;
                        proposal.job            = item;
                        proposal.freelancerId   = item.freelancerId;
                        proposal.bidAmount      = i.bidAmount;
                        proposal.description    = i.description;
                        proposal.answers        = i.answers;
                        proposals.Add(proposal);
                    }
                }
            }
            CustomerViewModel model = new CustomerViewModel();

            model.customerId  = customer.customerId;
            model.phoneNumber = customer.phoneNumber;
            model.lastName    = user.lastName;
            model.firstName   = user.firstName;

            model.photo = customer.photo;

            userViewModel.customerViewModel = model;
            userViewModel.jobs      = _context.Job.Where(e => e.customerId.Contains(userId)).ToList();
            userViewModel.proposals = proposals;
            return(View(userViewModel));
        }
        public async Task <IActionResult> SearchFreelancers()
        {
            string userId   = RegisterModel.registeredUser;
            var    customer = await _context.Customer
                              .FirstOrDefaultAsync(m => m.customerId == userId);

            var address = await _context.Address
                          .FirstOrDefaultAsync(m => m.userId == userId);

            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.Id == userId);

            CustomerViewModel model = new CustomerViewModel();

            model.customerId  = customer.customerId;
            model.phoneNumber = customer.phoneNumber;
            model.lastName    = user.lastName;
            model.firstName   = user.firstName;

            model.photo = customer.photo;
            UserViewModel userViewModel = new UserViewModel()
            {
                customerViewModel = model
            };
            var freelancers = _context.Freelancer
                              .FromSqlRaw <Freelancer>("SELECT * FROM Freelancer")
                              .ToList();

            List <FreelancerViewModel> freelancerViewModels = new List <FreelancerViewModel>();

            foreach (var userr in freelancers)
            {
                FreelancerViewModel freelancer = new FreelancerViewModel();
                var users     = _context.Users.Where(e => e.Id.Contains(userr.freelancerId)).FirstOrDefault();
                var addresses = _context.Address.Where(e => e.userId.Contains(userr.freelancerId)).FirstOrDefault();
                freelancer.freelancerId       = users.Id;
                freelancer.firstName          = users.firstName;
                freelancer.lastName           = users.lastName;
                freelancer.email              = users.Email;
                freelancer.phoneNumber        = userr.phoneNumber;
                freelancer.englishProficiency = userr.englishProficiency;
                freelancer.rate      = userr.rate;
                freelancer.education = userr.education;
                freelancer.photo     = userr.photo;
                freelancer.city      = addresses.city;
                freelancer.pobox     = addresses.pobox;
                freelancerViewModels.Add(freelancer);
                //freelancer = null;
            }
            userViewModel.freelancers = freelancerViewModels;
            return(View(userViewModel));
        }
        // GET: Freelancers

        public async Task <IActionResult> Index()
        {
            UserViewModel userViewModel = new UserViewModel();
            string        userId        = User.GetUserId();
            var           freelancer    = await _context.Freelancer
                                          .FirstOrDefaultAsync(m => m.freelancerId == userId);

            var address = await _context.Address
                          .FirstOrDefaultAsync(m => m.userId == userId);

            var expertise = await _context.Expertise
                            .FirstOrDefaultAsync(m => m.freelancerId == userId);

            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.Id == userId);

            var job = _context.Job;
            FreelancerViewModel model = new FreelancerViewModel();
            var proposal = _context.Proposal.Where(m => m.freelancerId == userId);
            List <ProposalViewModel> proposals = new List <ProposalViewModel>();
            ProposalViewModel        prop      = new ProposalViewModel();

            foreach (var item in proposal)
            {
                prop.jobId       = item.jobId;
                prop.description = item.description;
                prop.answers     = item.answers;
                prop.bidAmount   = item.bidAmount;
                prop.jobTitle    = _context.Job.FirstOrDefault(m => m.jobId == item.jobId).title;
                proposals.Add(prop);
            }
            model.freelancerId         = freelancer.freelancerId;
            model.phoneNumber          = freelancer.phoneNumber;
            model.title                = freelancer.title;
            model.rate                 = freelancer.rate;
            model.score                = freelancer.score;
            model.lastName             = user.lastName;
            model.firstName            = user.firstName;
            model.region               = address.region;
            model.city                 = address.city;
            model.expertiseStatus      = "Unverified";
            model.professionalOverview = freelancer.professionalOverview;
            model.hourlyRate           = freelancer.hourlyRate;

            model.photo       = freelancer.photo;
            model.houseNumber = address.houseNumber;
            userViewModel.FreelancerViewModel = model;
            userViewModel.jobs      = job.ToList();
            userViewModel.proposals = proposals;
            return(View(userViewModel));
        }
        public ActionResult ViewFreelancerProfile(int?id)
        {
            Person     p          = db.People.FirstOrDefault(x => x.PersonId == id);
            AspNetUser aspNetUser = db.AspNetUsers.FirstOrDefault(x => x.Id == p.User_AccountID);
            Freelancer freelancer = db.Freelancers.FirstOrDefault(f => f.FreelancerId == p.PersonId);
            var        Fskills    = db.FreelancerSkills.Where(s => s.FreelancerId == freelancer.FreelancerId);

            FreelancerViewModel freelancerViewModel = new FreelancerViewModel();

            freelancerViewModel.Person          = p;
            freelancerViewModel.AspNetUser      = aspNetUser;
            freelancerViewModel.Freelancer      = freelancer;
            freelancerViewModel.FreelancerSkill = Fskills;

            return(View(freelancerViewModel));
        }
        public ActionResult ViewFreelancers()
        {
            var freelancers = db.Freelancers;
            List <FreelancerViewModel> list = new List <FreelancerViewModel>();

            foreach (Freelancer freelancer in freelancers)
            {
                Person p = db.People.FirstOrDefault(x => x.PersonId == freelancer.FreelancerId);
                if (p.Approved == true)
                {
                    FreelancerViewModel freelancerViewModel = new FreelancerViewModel();
                    freelancerViewModel.Freelancer = freelancer;
                    freelancerViewModel.Person     = p;
                    AspNetUser aspNetUser = db.AspNetUsers.FirstOrDefault(x => x.Id == p.User_AccountID);
                    freelancerViewModel.AspNetUser = aspNetUser;
                    var Fskills = db.FreelancerSkills.Where(s => s.FreelancerId == freelancer.FreelancerId);
                    freelancerViewModel.FreelancerSkill = Fskills;
                    list.Add(freelancerViewModel);
                }
            }

            return(View(list));
        }
        public async Task <IActionResult> SubmitProposal()
        {
            string        jobId         = Request.Query["jobId"].ToString();
            UserViewModel userViewModel = new UserViewModel();
            string        userId        = User.GetUserId();
            var           freelancer    = await _context.Freelancer
                                          .FirstOrDefaultAsync(m => m.freelancerId == userId);

            var user = await _context.Users
                       .FirstOrDefaultAsync(m => m.Id == userId);

            FreelancerViewModel model = new FreelancerViewModel();

            model.freelancerId = freelancer.freelancerId;
            model.phoneNumber  = freelancer.phoneNumber;
            model.lastName     = user.lastName;
            model.firstName    = user.firstName;

            model.photo                       = freelancer.photo;
            userViewModel.job                 = new Job();
            userViewModel.job.jobId           = jobId;
            userViewModel.FreelancerViewModel = model;
            return(View(userViewModel));
        }
        public async Task <IActionResult> SearchFreelancers(string keyword)
        {
            string userId   = RegisterModel.registeredUser;
            var    customer = await _context.Customer
                              .FirstOrDefaultAsync(m => m.customerId == userId);

            var address = await _context.Address
                          .FirstOrDefaultAsync(m => m.userId == userId);

            var userss = await _context.Users
                         .FirstOrDefaultAsync(m => m.Id == userId);

            CustomerViewModel model = new CustomerViewModel();

            model.customerId  = customer.customerId;
            model.phoneNumber = customer.phoneNumber;
            model.lastName    = userss.lastName;
            model.firstName   = userss.firstName;

            model.photo = customer.photo;
            UserViewModel userViewModel = new UserViewModel()
            {
                customerViewModel = model
            };

            keyword = Request.Form["keyword"].ToString();
            keyword = StringExtensions.FirstCharToUpper(keyword);
            if (keyword != null)
            {
                List <FreelancerViewModel> freelancerViewModels = new List <FreelancerViewModel>();
                FreelancerViewModel        freelancer           = new FreelancerViewModel();
                var users = _context.Users.Where(e => e.firstName.Contains(keyword) ||
                                                 e.lastName.Contains(keyword)).ToList();
                List <Freelancer> freelancers = new List <Freelancer>();
                List <Address>    addresses   = new List <Address>();
                foreach (var user in users)
                {
                    freelancer.freelancerId = user.Id;
                    freelancer.firstName    = user.firstName;
                    freelancer.lastName     = user.lastName;
                    freelancer.email        = user.Email;
                    freelancers.Add(_context.Freelancer.Where(e => e.freelancerId.Contains(user.Id)).FirstOrDefault());
                    foreach (var item in freelancers)
                    {
                        freelancer.phoneNumber        = item.phoneNumber;
                        freelancer.englishProficiency = item.englishProficiency;
                        freelancer.rate      = item.rate;
                        freelancer.education = item.education;
                        freelancer.photo     = item.photo;
                    }
                    addresses.Add(_context.Address.Where(e => e.userId.Contains(user.Id)).FirstOrDefault());
                    foreach (var col in addresses)
                    {
                        freelancer.city  = col.city;
                        freelancer.pobox = col.pobox;
                    }
                    freelancerViewModels.Add(freelancer);
                }
                userViewModel.freelancers = freelancerViewModels;
                return(View(userViewModel));
            }
            return(View(userViewModel));
        }