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);
        }
示例#2
0
        public LoginAnswerOption TryLogin(LoginOption loginOption)
        {
            Backer backer = dbContext
                            .Set <Backer>()
                            .Where(o => o.FirstName == loginOption.Username && o.LastName == loginOption.Password)
                            .SingleOrDefault();

            if (backer != null)
            {
                return new LoginAnswerOption()
                       {
                           Id         = backer.Id,
                           TypeOfUser = "******"
                       }
            }
            ;
            ProjectCreator projectCreator = dbContext
                                            .Set <ProjectCreator>()
                                            .Where(o => o.FirstName == loginOption.Username && o.LastName == loginOption.Password)
                                            .SingleOrDefault();

            if (projectCreator.FirstName == "admin")
            {
                return new LoginAnswerOption()
                       {
                           Id         = projectCreator.Id,
                           TypeOfUser = "******"
                       }
            }
            ;
            if (projectCreator != null)
            {
                return new LoginAnswerOption()
                       {
                           Id         = projectCreator.Id,
                           TypeOfUser = "******"
                       }
            }
            ;

            return(new LoginAnswerOption()
            {
                Id = 0,
                TypeOfUser = null
            });
        }
    }
}
示例#3
0
        public Result <bool> DeletePackage(int packageId)
        {
            var result = new Result <bool>();

            if (packageId <= 0)
            {
                result.ErrorCode = StatusCode.BadRequest;
                result.ErrorText = $"Id {packageId} is invalid";
                return(result);
            }

            var package = dbContext.Set <Package>()
                          .Where(p => p.PackageId == packageId)
                          .SingleOrDefault();

            if (package == null)
            {
                result.ErrorCode = StatusCode.NotFound;
                result.ErrorText = $"Package with id {packageId} was not found";
                return(result);
            }

            try
            {
                dbContext.Remove(dbContext.Set <Package>()
                                 .Where(p => p.PackageId == packageId)
                                 .SingleOrDefault());

                if (dbContext.SaveChanges() > 0)
                {
                    result.ErrorCode = StatusCode.OK;
                    result.Data      = true;
                    return(result);
                }
            }
            catch (Exception ex)
            {
                result.ErrorCode = StatusCode.InternalServerError;
                result.ErrorText = ex.ToString();
                return(result);
            }

            result.ErrorCode = StatusCode.InternalServerError;
            result.ErrorText = $"Package could not be deleted";
            return(result);
        }
        private RewardPackage GetRewardPackageFromRewardPackageOption(RewardPackageOption rewardPackageOption)
        {
            Project project = dbContext.Set <Project>().Find(rewardPackageOption.ProjectId);

            return(new RewardPackage
            {
                Reward = rewardPackageOption.Reward,
                Price = rewardPackageOption.Price,
                Project = project
            });
        }
示例#5
0
        public IQueryable <Project> SearchProject(SearchProjectOptions options)
        {
            if (options == null)
            {
                return(null);
            }

            var query = dbContext
                        .Set <Project>()
                        .AsQueryable();

            if (options.ProjectId != null)
            {
                query = query.Where(p => p.ProjectId == options.ProjectId);
            }

            if (options.Title != null)
            {
                query = query.Where(p => (p.Title == options.Title) || p.Title.Contains(options.Title));
            }

            if (options.Description != null)
            {
                query = query.Where(p => p.Description == options.Description);
            }

            if (options.Category != null)
            {
                query = query.Where(p => p.Category == options.Category.Value);
            }

            if (options.UserId != null)
            {
                query = query.Where(p => p.UserId == options.UserId.Value);
            }

            return(query);
        }
        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
            });
        }
示例#7
0
        public IQueryable <User> SearchUser(SearchUserOptions options)
        {
            if (options == null)
            {
                return(null);
            }

            var query = dbContext
                        .Set <User>()
                        .AsQueryable();

            if (!string.IsNullOrWhiteSpace(options.FirstName))
            {
                query = query.Where(u => u.FirstName == options.FirstName);
            }

            if (!string.IsNullOrWhiteSpace(options.LastName))
            {
                query = query.Where(u => u.LastName == options.LastName);
            }

            if (!string.IsNullOrWhiteSpace(options.Email))
            {
                query = query.Where(u => u.Email == options.Email);
            }

            if (options.CreatedFrom != default(DateTime))
            {
                query = query.Where(u => u.Created >= options.CreatedFrom);
            }

            if (options.CreatedTo != default(DateTime))
            {
                query = query.Where(u => u.Created <= options.CreatedTo);
            }

            if (options.UserId != null)
            {
                query = query.Where(u => u.UserId == options.UserId.Value);
            }

            if (options.IsProjectCreator != null)
            {
                query = query.Where(u => u.IsProjectCreator == options.IsProjectCreator.Value);
            }

            return(query);
        }
示例#8
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
            });
        }
        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
            });
        }
示例#10
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
            });
        }
示例#11
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);
            }
        }