/// <summary>
        /// This helper function store uploaded images in memory
        /// </summary>
        public static Models.Image CreateUserImage(AppDbContext db, int Id, string imageToStore)
        {
            Image  image;
            string dbPath    = "";
            var    byteArray = Convert.FromBase64String(imageToStore);

            Directory.CreateDirectory(
                HttpContext.Current.Server.MapPath("~/Image/Advertisements/" + Id));
            string folderPath =
                HttpContext.Current.Server.MapPath("~/Image/Advertisements/" + Id + "/");
            string fileName  = "UserImage" + "_" + DateTime.Now.ToString("yy-MM-dd-hh-mm-ss") + ".jpg";
            string imagePath = folderPath + fileName;

            dbPath = "/Image/Advertisements/" + Id + "/" + fileName;
            using (MemoryStream mStream = new MemoryStream(byteArray))
            {
                image = Image.FromStream(mStream);
                image.Save(imagePath, ImageFormat.Jpeg);
            }

            //We create image instance to store it in db with associated advertisement
            var userImage = new Models.Image()
            {
                Name      = "User" + "_" + Id + "Ad",
                ImagePath = dbPath,
                Type      = ImageType.USER_IMAGE,
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now
            };

            db.Images.Add(userImage);
            return(userImage);
        }
示例#2
0
        private void saveChanges_Click(object sender, EventArgs e)
        {
            var mainForm = (SoftCinemaForm)((Button)sender).Parent.Parent.Parent;

            mainForm.RenderSideBar();


            try
            {
                string       email       = this.emailTextBox.Text;
                string       phoneNumber = this.phoneNumberTextBox.Text;
                string       password    = this.passwordTextBox.Text;
                Models.Image profilePic  = new Models.Image()
                {
                    Content = imageBytes
                };
                ImageService.AddImage(profilePic.Content);
                bool isDeleted = false;
                UserService.AddOrUpdateUser(user.Username, password, email, phoneNumber, (Role)user.Role, profilePic);
                user.ProfilePicture = profilePic;
                UserService.AddImageToUser(user, profilePic);

                UserService.AddImageToUser(MyAccountForm._currentUser, profilePic);
                MyAccountForm._currentUser = user;

                TopPanelForm.ShowGreetings();
            }
            catch (Exception exception)
            {
                MessageBox.Show(Constants.ErrorMessages.UserUpdateErrorMesage);
            }
            SoftCinemaForm.SetContentHolderForm(new MyAccountForm());
        }
示例#3
0
        //Utilities
        public void ShowGreetings()
        {
            GreetingLabel.Show();
            GreetingLabel.ForeColor = Color.White;
            GreetingLabel.Text      = string.Format(Constants.GreetingsMessage,
                                                    AuthenticationManager.GetCurrentUser().Username);

            //Show Image
            User currentUser = AuthenticationManager.GetCurrentUser();

            byte[] imageBytes = imageService.GetProfilePicture(currentUser.Username);
            if (imageBytes != null)
            {
                System.Drawing.Image image = imageService.byteArrayToImage(imageBytes);
                profilePicPictureBox.Image = imageService.ScaleImage(image, 55, 54);
                profilePicPictureBox.Size  = new Size(profilePicPictureBox.Image.Width,
                                                      profilePicPictureBox.Image.Height);
            }
            else
            {
                Image        image        = Image.FromFile(@"../../Utilities/Images/default.jpg");
                byte[]       imageToBytes = imageService.imageToByteArray(image);
                Models.Image newImage     = new Models.Image()
                {
                    Content = imageToBytes
                };
                currentUser.ProfilePicture = newImage;
                profilePicPictureBox.Image = imageService.ScaleImage(image, 55, 54);
            }
            profilePicPictureBox.Location = new Point(590, profilePicPictureBox.Location.Y);
            profilePicPictureBox.Show();
            LogoutButton.Show();
        }
        public static Models.Image CreateDefaultImage(string name, WebImageType type)
        {
            string    defaultPath = "";
            ImageType imageType;

            switch (type)
            {
            case WebImageType.AVATAR:
                defaultPath = "/Image/Games/Default/Default.jpg";
                imageType   = ImageType.AVATAR;
                break;

            case WebImageType.COVER:
                defaultPath = "/Image/Games/Default/DefaultCover.jpg";
                imageType   = ImageType.COVER;
                break;

            case WebImageType.NOTIFICATION_IMAGE:
                defaultPath = "/Image/Games/Default/Default.jpg";
                imageType   = ImageType.NOTIFICATION_IMAGE;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
            //We create image instance and store it in database
            var defaultImage = new Models.Image()
            {
                Name      = name,
                ImagePath = defaultPath,
                Type      = imageType,
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now
            };

            return(defaultImage);
        }
示例#5
0
        private void saveChanges_Click(object sender, EventArgs e)
        {
            var mainForm = (SoftCinemaForm)((Button)sender).Parent.Parent.Parent;

            mainForm.RenderSideBar();

            try
            {
                string email       = this.emailTextBox.Text;
                string phoneNumber = this.phoneNumberTextBox.Text;
                string password    = string.Empty;
                if (userService.isPasswordValid(this.passwordTextBox.Text))
                {
                    password = this.passwordTextBox.Text;
                }
                Models.Image profilePic = null;
                if (_image != null)
                {
                    profilePic = new Models.Image()
                    {
                        Content = imageBytes
                    };
                }
                bool isDeleted = false;
                userService.EditUser(user.Username, email, phoneNumber, password, profilePic);

                MyAccountForm._currentUser = user;

                mainForm.RenderTopPanelForm();
            }
            catch (Exception)
            {
                MessageBox.Show(Constants.ErrorMessages.UserUpdateErrorMesage);
            }
            SoftCinemaForm.SetContentHolderForm(new MyAccountForm());
        }
        public static Models.Image CreateWebImage(HttpPostedFileBase file, string name, WebImageType type)

        {
            string    baseAddressInMemory = "";
            ImageType imageType;

            switch (type)
            {
            case WebImageType.AVATAR:
                baseAddressInMemory = "/Image/Games/";
                imageType           = ImageType.AVATAR;
                break;

            case WebImageType.COVER:
                baseAddressInMemory = "/Image/Games/";
                imageType           = ImageType.COVER;
                break;

            case WebImageType.GAMEPLAY:
                baseAddressInMemory = "/Image/Games/";
                imageType           = ImageType.GAMEPLAY;
                break;

            case WebImageType.NOTIFICATION_IMAGE:
                baseAddressInMemory = "/Image/Notifications/";
                imageType           = ImageType.NOTIFICATION_IMAGE;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }


            string avatarPhotoFilePath = "";
            var    folderRandomIndex   = RandomHelper.RandomInt(0, 10000);
            var    fileRandomIndex     = RandomHelper.RandomInt(0, 10000);

            var avatarPhotoFileExtension = Path.GetExtension(file.FileName);

            Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~" + baseAddressInMemory + folderRandomIndex));

            var avatarPhotoFileName = fileRandomIndex + DateTime.Now.ToString("yy-MM-dd-hh-mm-ss") +
                                      avatarPhotoFileExtension;

            avatarPhotoFilePath = baseAddressInMemory + folderRandomIndex + "/" + avatarPhotoFileName;
            avatarPhotoFileName =
                Path.Combine(HttpContext.Current.Server.MapPath("~" + baseAddressInMemory + folderRandomIndex + "/"), avatarPhotoFileName);
            file.SaveAs(avatarPhotoFileName);

            //We create image instance and store it in database
            var webImage = new Models.Image()
            {
                Name      = name,
                ImagePath = avatarPhotoFilePath,
                Type      = imageType,
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now
            };

            return(webImage);
        }
示例#7
0
        public async Task <IHttpActionResult> Create(AdvertisementCreateDto advertisementCreate)
        {
            if (ModelState.IsValid)
            {
                var session = await
                              db.Sessions.SingleOrDefaultAsync(
                    QueryHelper.GetSessionObjectValidationQuery(advertisementCreate.Session));

                if (session != null)
                {
                    var user = session.User;


                    var isImageEmpty = string.IsNullOrEmpty(advertisementCreate.UserImage);

                    Models.Image userImage = null;
                    if (!isImageEmpty)
                    {
                        //we write user's uploaded image in memory
                        userImage = ImageHandler.CreateUserImage(db, user.Id, advertisementCreate.UserImage);
                    }

                    var newAdvertisement = new Advertisement()
                    {
                        User               = user,
                        MedType            = advertisementCreate.MedType,
                        GameId             = advertisementCreate.GameId,
                        GameReg            = advertisementCreate.GameReg,
                        Latitude           = advertisementCreate.Latitude,
                        Longitude          = advertisementCreate.Longitude,
                        LocationRegionId   = advertisementCreate.LocationRegionId,
                        LocationCityId     = advertisementCreate.LocationCityId,
                        LocationProvinceId = advertisementCreate.LocationProvinceId,
                        Price              = advertisementCreate.Price,
                        PlatformId         = advertisementCreate.PlatformId,
                        Caption            = advertisementCreate.Caption,
                        UserImage          = userImage,
                        isDeleted          = false,
                        CreatedAt          = DateTime.Now,
                        UpdatedAt          = DateTime.Now
                    };

                    db.Advertisements.Add(newAdvertisement);


                    if (advertisementCreate.ExchangeGames.Count > 0) //we have some games to exchange
                    {
                        foreach (var game in advertisementCreate.ExchangeGames)
                        {
                            var newExchange = new Exchange()
                            {
                                AdvertisementId = newAdvertisement.Id,
                                GameId          = game
                            };
                            db.Exchanges.Add(newExchange);
                        }
                    }

                    await db.SaveChangesAsync();

                    // Broadcasting

                    NotificationGenerator.NewAdvertisementNotification(db, newAdvertisement);


                    return(Ok(newAdvertisement.Id));
                }

                return(Unauthorized());
            }

            return(BadRequest());
        }