示例#1
0
        public ActionResult Create(InfluencerFormViewModel viewModel, HttpPostedFileBase upload)
        {
            // BAD SCENARIO IF THE MODEL IS INVALID
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Create"));
            }

            // GET USER ID AND USER
            var userId = User.Identity.GetUserId();
            var user   = unitOfWork.ApplicationUserRepository.GetUser(userId);

            // BRING AURORA WALLET TO ALLOW THE USER PAY US
            var auroraWallet = unitOfWork.AuroraWalletRepository.GetAuroraWallet();

            if (auroraWallet == null)
            {
                return(HttpNotFound());
            }

            // THIS TRY CATCH CHECKS IF THE PAYMENT CAN BE DONE, AND IN GENERAL IF SOMETHING GOES WRONG
            try
            {
                //CREATE THE INFLUENCER
                var influencer = Influencer.CreateInflunecerWithPayment(viewModel, user, auroraWallet);

                //IF THERE IS NEW FILE UPLOADED
                if (upload != null && upload.ContentLength > 0)
                {
                    //WE WILL CREATE A NEW FILE WITH THE TYPE OF AVATAR (THIS IS WHAT I NEED HERE)
                    var avatar = FileUpload.GiveInfluencerAvatar(System.IO.Path.GetFileName(upload.FileName), upload.ContentType, null, FileType.Avatar, influencer.ID);

                    //BLACK MAGIC
                    using (var reader = new System.IO.BinaryReader(upload.InputStream))
                    {
                        avatar.Content = reader.ReadBytes(upload.ContentLength);
                    }

                    // GIVE INFLUENCER THE LIST OF FILES WITH THE AVATAR FILE
                    influencer.FileUploads = new List <FileUpload> {
                        avatar
                    };
                }

                unitOfWork.InfluencerRepository.AddInfluencer(influencer);

                // SAVE CHANGES TO DB
                unitOfWork.Complete();
            }
            catch (Exception)
            {
                // HERE YOU CAN ADD THE SAME PAGE WITH A NEW VIEW PROPERTY TO DISPLAY THAT THE PAYMENT COULDNT BE DONE
                return(RedirectToAction("Create"));
            }

            // REDIRECT TO ADD A GIG (USER EXPIRIENCE)
            return(RedirectToAction("Create", "Gig", null));
        }
示例#2
0
        public ActionResult Update(InfluencerFormViewModel viewModel, HttpPostedFileBase upload)
        {
            // GET THE USER ID TO USE IT LATER
            var userId = User.Identity.GetUserId();

            // BRING THE INFLUENCER FOR EDIT
            var influencerDb = unitOfWork.InfluencerRepository.GetInfluencerForUpdate(viewModel.ID);

            // CHECK IF THE INFLUENCER EXIST
            if (influencerDb == null)
            {
                return(HttpNotFound());
            }

            if (influencerDb.User.Id != userId)
            {
                return(new HttpUnauthorizedResult());
            }

            // BRING AURORA WALLET FOR RETURNING MONEY TO USER AND GETTING OUR CUT IF NEEDED
            var auroraWallet = unitOfWork.AuroraWalletRepository.GetAuroraWallet();

            if (auroraWallet == null)
            {
                return(HttpNotFound());
            }

            // THIS TRY CATCH CHECKS IF THE PAYMENT CAN BE DONE, AND IN GENERAL IF SOMETHING GOES WRONG
            try
            {
                influencerDb.Modify(viewModel, influencerDb, auroraWallet);

                // IF THERE IS MEW FILE UPLOADED THEN WE WILL DELETE THE INFLUENCER FILE FOR AVATAR FROM HIS FILES
                if (upload != null && upload.ContentLength > 0)
                {
                    if (influencerDb.FileUploads.Any(f => f.FileType == FileType.Avatar))
                    {
                        unitOfWork.FileUploadRepository.RemoveGigAvatarFileUpload(influencerDb);
                    }

                    // THEN WE WILL CREATE NEW FILE AND GIVE IT TO THE USER
                    var avatar = FileUpload.GiveInfluencerAvatar(System.IO.Path.GetFileName(upload.FileName), upload.ContentType, null, FileType.Avatar, influencerDb.ID);

                    // BLACK MAGIC
                    using (var reader = new System.IO.BinaryReader(upload.InputStream))
                    {
                        avatar.Content = reader.ReadBytes(upload.ContentLength);
                    }

                    // WE ADD THE LIST WITH THE NEW AVATAR FILE TO THE INFLUENCER LIST
                    influencerDb.FileUploads = new List <FileUpload> {
                        avatar
                    };
                }
            }
            catch (Exception)
            {
                return(RedirectToAction("Update", viewModel));
            }

            // SAVE CHANGES TO DB
            unitOfWork.Complete();

            // REDIRECT TO ADD A GIG (USER EXPIRIENCE)
            return(RedirectToAction("Create", "Gig", null));
        }