예제 #1
0
        public IUserService.UserEntitis Create(Account account, string password)
        {
            try
            {
                MailAddress m = new MailAddress(account.Email);
            }
            catch (FormatException)
            {
                throw new AppException("Email not formatted correctly");
            }
            var acc = context.Accounts.SingleOrDefault(p => p.Email == account.Email);

            if (acc != null)
            {
                throw new AppException("Email already exist");
            }
            byte[] passwordHash, passwordSalt;
            CreatePasswordHash(password, out passwordHash, out passwordSalt);
            account.PasswordHash = passwordHash;
            account.PasswordSalt = passwordSalt;
            account.Balance      = 0;
            account.OnReady      = false;
            context.Accounts.Add(account);
            context.SaveChanges();
            account = context.Accounts
                      .Include(p => p.Role).SingleOrDefault(p => p.Id == account.Id);

            IUserService.UserEntitis userEntitis = new IUserService.UserEntitis(account);
            userEntitis.createUserToken();
            return(userEntitis);
        }
예제 #2
0
        public IActionResult PostAvatar([FromBody] ImageModel imageModel)
        {
            String jwt = Request.Headers["Authorization"];

            jwt = jwt.Substring(7);
            //Decode jwt and get payload
            var stream    = jwt;
            var handler   = new JwtSecurityTokenHandler();
            var jsonToken = handler.ReadToken(stream);
            var tokenS    = jsonToken as JwtSecurityToken;
            //I can get Claims using:
            var email   = tokenS.Claims.First(claim => claim.Type == "email").Value;
            var account = _context.Accounts.SingleOrDefault(p => p.Email == email);

            if (account == null)
            {
                return(BadRequest());
            }

            var nameDelete = account.AvatarUrl.Substring(account.AvatarUrl.LastIndexOf("/") + 1);

            if (nameDelete != "default.jpg")
            {
                try
                {
                    System.IO.File.Delete(rootpath + "//Avatars//" + nameDelete);
                }
                catch (Exception)
                {
                    throw;
                }
            }

            string newname = account.Id + "_" + imageModel.Name;

            using (FileStream fs = System.IO.File.Create(rootpath + "\\Avatars\\" + newname))
            {
                fs.Close();
                System.IO.File.WriteAllBytes(rootpath + "\\Avatars\\" + newname, Convert.FromBase64String(imageModel.ImageBase64));
            }
            account.AvatarUrl             = "freelancervn.somee.com/api/images/avatars/" + newname;
            _context.Entry(account).State = EntityState.Modified;
            _context.SaveChanges();
            return(Ok(new { message = "Successful", url = account.AvatarUrl }));
        }
예제 #3
0
        public String FormatDataDB()
        {
            var name = "";

            foreach (var item in _context.Accounts.ToList())
            {
                name           = item.AvatarUrl.Substring(item.AvatarUrl.LastIndexOf("\\") + 1);
                item.AvatarUrl = "freelancervn.somee.com/api/images/avatars/" + name;
            }
            foreach (var item in _context.CapacityProfiles.ToList())
            {
                name          = item.ImageUrl.Substring(item.ImageUrl.LastIndexOf("\\") + 1);
                item.ImageUrl = "freelancervn.somee.com/api/images/images/" + name;
            }
            foreach (var item in _context.Specialties.ToList())
            {
                name       = item.Image.Substring(item.Image.LastIndexOf("\\") + 1);
                item.Image = "freelancervn.somee.com/api/images/assets/" + name;
            }
            _context.SaveChanges();
            //foreach (var item in _context.Accounts.ToList())
            //{
            //    item.AvatarUrl = "\\Avatars\\" + item.AvatarUrl;
            //}
            //_context.SaveChanges();

            //foreach (var item in _context.CapacityProfiles.ToList())
            //{
            //    item.ImageUrl = "\\Images\\" + item.ImageUrl;
            //}
            //_context.SaveChanges();

            //foreach (var item in _context.Specialties.ToList())
            //{
            //    item.Image = "\\Assets\\" + item.Image;
            //}
            //_context.SaveChanges();

            return("OK");
        }
        public async Task <ActionResult <CapacityProfileResponse> > PostCapacityProfile(CProfilePostModel cProfilePostModel)
        {
            String jwt = Request.Headers["Authorization"];

            jwt = jwt.Substring(7);
            //Decode jwt and get payload
            var stream    = jwt;
            var handler   = new JwtSecurityTokenHandler();
            var jsonToken = handler.ReadToken(stream);
            var tokenS    = jsonToken as JwtSecurityToken;
            //I can get Claims using:
            var     email   = tokenS.Claims.First(claim => claim.Type == "email").Value;
            Account account = await _context.Accounts.SingleOrDefaultAsync(p => p.Email == email);

            if (account == null)
            {
                return(BadRequest());
            }

            CapacityProfile capacityProfile = new CapacityProfile()
            {
                FreelancerId = account.Id,
                Name         = cProfilePostModel.Name,
                Description  = cProfilePostModel.Description,
                Urlweb       = cProfilePostModel.Urlweb,
            };

            _context.CapacityProfiles.Add(capacityProfile);

            await _context.SaveChangesAsync();


            foreach (var item in cProfilePostModel.Services)
            {
                _context.ProfileServices.Add(new ProfileService
                {
                    Cpid      = capacityProfile.Id,
                    ServiceId = item.Id,
                });
            }
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (CapacityProfileExists(capacityProfile.FreelancerId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }
            capacityProfile = _context.CapacityProfiles
                              .Include(p => p.ProfileServices).ThenInclude(p => p.Service)
                              .SingleOrDefault(p => p.Id == capacityProfile.Id);
            //create image
            string rootpath = _webHostEnvironment.WebRootPath;
            var    newname  = cProfilePostModel.ImageName + "_" + capacityProfile.Id;

            using (FileStream fs = System.IO.File.Create(rootpath + "\\Images" + newname))
            {
                fs.Close();
                System.IO.File.WriteAllBytes(rootpath + "\\Images" + newname, Convert.FromBase64String(cProfilePostModel.ImageBase64));
            }
            capacityProfile.ImageUrl = "freelancervn.somee.com/api/images/images/" + newname;
            _context.SaveChanges();
            return(Ok(new CapacityProfileResponse(capacityProfile)));
        }