Exemplo n.º 1
0
        public ProjectOptions CreateProject(ProjectOptions projectOptions)
        {
            var user    = dbContext.Set <User>().Where(u => u.Id == projectOptions.CreatorId).Include(p => p.CreatedProjects).SingleOrDefault();
            var project = new Project()
            {
                CreatorId   = projectOptions.CreatorId,
                Description = projectOptions.Description,
                Category    = projectOptions.Category,
                Photo       = projectOptions.Photo,
                Video       = projectOptions.Video,
                Goal        = projectOptions.Goal,
                Title       = projectOptions.Title,
                Status      = projectOptions.Status
            };

            user.CreatedProjects.Add(project);
            dbContext.Update(user);
            dbContext.SaveChanges();

            return(new ProjectOptions()
            {
                Id = project.Id,
                CreatorId = project.CreatorId,
                CurrentFund = project.CurrentFund,
                Description = project.Description,
                Category = project.Category,
                Photo = project.Photo,
                Video = project.Video,
                Goal = project.Goal,
                Title = project.Title,
                Status = project.Status,
                TimesFunded = project.TimesFunded
            });
        }
Exemplo n.º 2
0
        public Funding BuyPackageByUserId(int userId, int packageId)
        {
            var user          = dbContext.Set <User>().Where(u => u.Id == userId).Include(f => f.Fundings).SingleOrDefault();
            var fundingExists = dbContext.Set <Funding>().Where(u => u.UserId == userId).Where(p => p.PackageId == packageId).SingleOrDefault();

            if (fundingExists == null)
            {
                var newFund = new Funding()
                {
                    PackageId = packageId, UserId = userId
                };
                var package = dbContext.Set <Package>().Where(p => p.Id == packageId).Include(p => p.Project).SingleOrDefault();
                var project = dbContext.Set <Project>().Find(package.ProjectId);
                project.CurrentFund += package.Price;
                project.TimesFunded += 1;
                user.Fundings.Add(newFund);
                dbContext.Update(user);
                dbContext.Update(project);
                dbContext.SaveChanges();
                return(newFund);
            }
            else
            {
                return(null);
            }
        }
        public RewardPackageOption CreateRewardPackage(RewardPackageOption rewardPackageOption)
        {
            RewardPackage rewardPackage = GetRewardPackageFromRewardPackageOption(rewardPackageOption);

            dbContext.RewardPackages.Add(rewardPackage);
            dbContext.SaveChanges();
            rewardPackageOption.Id = rewardPackage.Id;
            return(rewardPackageOption);
        }
Exemplo n.º 4
0
        public RewardPackageOption AddPackageToProject(int projectId, int rewardPackageId)
        {
            var project       = db.Set <Project>().Find(projectId);
            var rewardPackage = db.Set <RewardPackage>().Find(rewardPackageId);

            project.RewardPackages.Add(rewardPackage);
            rewardPackage.Project = project;
            db.SaveChanges();
            return(new RewardPackageOption()
            {
                Price = rewardPackage.Price,
                ProjectId = project.Id,
                Reward = rewardPackage.Reward
            });
        }
Exemplo n.º 5
0
        public BackerOption CreateBacker(BackerOption backerOption)
        {
            Backer backer = new Backer
            {
                FirstName = backerOption.FirstName,
                LastName  = backerOption.LastName,
                Email     = backerOption.Email
            };

            dbContext.Backers.Add(backer);
            dbContext.SaveChanges();
            return(new BackerOption
            {
                FirstName = backerOption.FirstName,
                LastName = backerOption.LastName,
                Email = backer.Email
            });
        }
        public ProjectCreatorOption CreateProjectCreator(ProjectCreatorOption pcOption)
        {
            ProjectCreator pc = new ProjectCreator
            {
                FirstName   = pcOption.FirstName,
                LastName    = pcOption.LastName,
                Description = pcOption.Description,
                Email       = pcOption.Email
            };

            dbContext.ProjectCreators.Add(pc);
            dbContext.SaveChanges();
            return(new ProjectCreatorOption
            {
                FirstName = pc.FirstName,
                LastName = pc.LastName,
                Description = pc.Description,
                Email = pc.Email,
                Id = pc.Id
            });
        }
Exemplo n.º 7
0
        public MediaOption CreateMedia(MediaOption mediaOption)
        {
            Project project = db.Set <Project>().Where(o => o.Id == mediaOption.ProjectId).Include(o => o.Medias).SingleOrDefault();
            Media   media   = new Media()
            {
                Payload = mediaOption.Payload,
                Type    = mediaOption.Type,
                Project = project
            };

            var newMedia = db.Set <Media>().Add(media);

            db.SaveChanges();
            project.Medias.Add(newMedia.Entity);
            db.SaveChanges();

            return(new MediaOption()
            {
                Payload = media.Payload,
                Type = media.Type,
                ProjectId = mediaOption.ProjectId
            });
        }
Exemplo n.º 8
0
        public TransactionOption CreateTransaction(int backerId, int rewardPackageOptionId)
        {
            if (backerId == 0)
            {
                return(null);
            }
            Backer backer = dbContext.Backers.Find(backerId);

            if (backer == null)
            {
                return(null);
            }
            RewardPackage rewardPackage = dbContext.RewardPackages.Where(o => o.Id == rewardPackageOptionId).Include(o => o.Project).SingleOrDefault();

            if (rewardPackage == null)
            {
                return(null);
            }
            Transaction transaction = new Transaction {
                Backer = backer, RewardPackage = rewardPackage, Amount = rewardPackage.Price
            };

            dbContext.Transactions.Add(transaction);
            dbContext.SaveChanges();
            TransactionOption transactionOption = new TransactionOption
            {
                BackerName    = backer.LastName + " " + backer.FirstName + " ",
                TransactionId = transaction.Id,
                BackerId      = backer.Id,
                Amount        = transaction.Amount,
                ProjectName   = transaction.RewardPackage.Project.Title,
                RewardPackage = AddRewardPackageToTransaction(rewardPackageOptionId)
            };

            return(UpdateCurrentBudget(transactionOption));
        }
        public StatusUpdateOption AddStatusUpdate(StatusUpdateOption statusUpdateOption)
        {
            Project      project      = db.Set <Project>().Find(statusUpdateOption.ProjectId);
            StatusUpdate statusUpdate = new StatusUpdate()
            {
                Overload  = statusUpdateOption.Payload,
                Timestamp = statusUpdateOption.Timestamp,
                Project   = project
            };

            project.StatusUpdates.Add(statusUpdate);
            db.Set <StatusUpdate>().Add(statusUpdate);
            db.SaveChanges();
            return(statusUpdateOption);
        }
Exemplo n.º 10
0
        public PackageOptions AddPackageToProject(PackageOptions packageOptions, int projectId)
        {
            var project = dbContext.Set <Project>()
                          .Where(p => p.Id == projectId)
                          .Include(pac => pac.Packages)
                          .SingleOrDefault();
            var package = new Package()
            {
                Price     = packageOptions.Price,
                ProjectId = projectId,
                Reward    = packageOptions.Reward
            };

            project.Packages.Add(package);
            dbContext.Update(project);
            dbContext.SaveChanges();
            return(new PackageOptions()
            {
                Id = package.Id,
                Price = package.Price,
                ProjectId = package.ProjectId,
                Reward = package.Reward
            });
        }
Exemplo n.º 11
0
        public Result <Project> CreateProject(CreateProjectOptions options)
        {
            if (options == null)
            {
                return(Result <Project>
                       .CreateFailed(StatusCode.BadRequest, "Null options"));
            }

            var user = userService.SearchUser(new SearchUserOptions()
            {
                UserId = options.UserId
            }).Include(u => u.Projects)
                       .ThenInclude(p => p.Packages)
                       .SingleOrDefault();

            if (user == null)
            {
                return(Result <Project>
                       .CreateFailed(StatusCode.BadRequest, $"The UserId {options.UserId} does not exist"));
            }

            if (IsValidProjectOptions(options))
            {
                Project project = new Project();

                project.Title = options.Title;

                project.Description = options.Description;

                project.Category = options.Category;

                project.FinancialGoal = options.FinancialGoal;

                foreach (var url in options.MediaUrls)
                {
                    if (!string.IsNullOrWhiteSpace(url))
                    {
                        project.Media.Add(new ProjectMedia()
                        {
                            MediaUrl = url
                        });
                    }
                }

                user.Projects.Add(project);
                user.IsProjectCreator = true;

                try
                {
                    if (dbContext.SaveChanges() > 0)
                    {
                        return(Result <Project>
                               .CreateSuccessful(project));
                    }
                    else
                    {
                        return(Result <Project>
                               .CreateFailed(StatusCode.InternalServerError, "Project could not be made"));
                    }
                }
                catch (Exception ex)
                {
                    return(Result <Project>
                           .CreateFailed(StatusCode.InternalServerError, ex.ToString()));
                }
            }

            return(Result <Project>
                   .CreateFailed(StatusCode.InternalServerError, "Project options are not valid"));
        }
Exemplo n.º 12
0
        public Result <User> CreateUser(CreateUserOptions options)
        {
            if (options == null)
            {
                return(Result <User>
                       .CreateFailed(StatusCode.BadRequest, "Null options"));
            }

            var user = new User();

            if (!string.IsNullOrWhiteSpace(options.FirstName))
            {
                user.FirstName = options.FirstName;
            }
            else
            {
                return(Result <User>
                       .CreateFailed(StatusCode.BadRequest, "First name was null or empty"));
            }

            if (!string.IsNullOrWhiteSpace(options.LastName))
            {
                user.LastName = options.LastName;
            }
            else
            {
                return(Result <User>
                       .CreateFailed(StatusCode.BadRequest, "Last name was null or empty"));
            }

            if (string.IsNullOrWhiteSpace(options.Email))
            {
                return(Result <User>
                       .CreateFailed(StatusCode.BadRequest, "Email was null or empty"));
            }

            options.Email = options.Email.Trim();

            if (IsValidEmail(options.Email))
            {
                user.Email = options.Email;
            }
            else
            {
                return(Result <User>
                       .CreateFailed(StatusCode.BadRequest, "Email submitted was not a valid email address"));
            }

            dbContext.Add(user);

            try
            {
                if (dbContext.SaveChanges() > 0)
                {
                    return(Result <User>
                           .CreateSuccessful(user));
                }
                else
                {
                    return(Result <User>
                           .CreateFailed(StatusCode.InternalServerError, "User could not be created"));
                }
            }
            catch (Exception ex)
            {
                return(Result <User>
                       .CreateFailed(StatusCode.InternalServerError, ex.ToString()));
            }
        }
Exemplo n.º 13
0
        public Result <Package> CreatePackage(CreatePackageOptions options)
        {
            if (options == null)
            {
                return(Result <Package>
                       .CreateFailed(StatusCode.BadRequest, "Null options"));
            }

            var project = projectService.SearchProject(new SearchProjectOptions()
            {
                ProjectId = options.ProjectId
            }).SingleOrDefault();


            if (project == null)
            {
                return(Result <Package>
                       .CreateFailed(StatusCode.BadRequest, $"The ProjectId {options.ProjectId} does not exist"));
            }

            var package = new Package();

            if (!string.IsNullOrWhiteSpace(options.Description))
            {
                package.Description = options.Description;
            }
            else
            {
                return(Result <Package>
                       .CreateFailed(StatusCode.BadRequest, $"Package description is empty"));
            }

            if (options.Price > 0M)
            {
                package.Price = (decimal)options.Price;
            }
            else
            {
                return(Result <Package>
                       .CreateFailed(StatusCode.BadRequest, $"Price is not valid"));
            }

            project.Packages.Add(package);

            try
            {
                if (dbContext.SaveChanges() > 0)
                {
                    return(Result <Package>
                           .CreateSuccessful(package));
                }
                else
                {
                    return(Result <Package>
                           .CreateFailed(StatusCode.InternalServerError, "Package could not be created"));
                }
            }
            catch (Exception ex)
            {
                return(Result <Package>
                       .CreateFailed(StatusCode.InternalServerError, ex.ToString()));
            }
        }