示例#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));
        }