public Result <bool> Edit(string email, string newName, string newAddress, DateTime newBirthDate)
        {
            var result      = new Result <bool>();
            var context     = new CrowDoDbContext();
            var updatedUser = context.Set <User>()
                              .SingleOrDefault(u => u.Email == email);

            if (IsValidEmail(email) == false)
            {
                result.ErrorCode = 16;
                result.ErrorText = "Invalid email";
                return(result);
            }

            if (updatedUser == null)
            {
                result.ErrorCode = 8;
                result.ErrorText = "No user found";
                return(result);
            }
            updatedUser.Name      = newName;
            updatedUser.Address   = newAddress;
            updatedUser.BirthDate = newBirthDate;

            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 15;
                result.ErrorText = "An error occured while saving data";
                return(result);
            }

            result.Data = true;
            return(result);
        }
        public Result <bool> Delete(string email)
        {
            var context = new CrowDoDbContext();

            var result = new Result <bool>();

            var user = context.Set <User>()
                       .Include(u => u.CreatedProjects)
                       .SingleOrDefault(u => u.Email == email);

            if (IsValidEmail(email) == false)
            {
                result.ErrorCode = 14;
                result.ErrorText = "Invalid email";
                return(result);
            }

            context.Remove(user);

            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 15;
                result.ErrorText = "An error occured while saving data";
                return(result);
            }

            result.Data = true;
            return(result);
        }
        public Result <User> Create(string email, string name, string address, DateTime birthDate)
        {
            var context = new CrowDoDbContext();

            var result = new Result <User>();

            //Validations
            if (IsValidEmail(email) == false)
            {
                result.ErrorCode = 10;
                result.ErrorText = "Invalid email";
                return(result);
            }

            if (string.IsNullOrWhiteSpace(name))
            {
                result.ErrorCode = 11;
                result.ErrorText = "Invalid name";
                return(result);
            }

            if (birthDate.AddYears(18) > DateTime.Now)
            {
                result.ErrorCode = 12;
                result.ErrorText = "Not permited";
                return(result);
            }

            var existingEmail = context.Set <User>().Where(m => m.Email == email).Any(); // returns bool //

            if (existingEmail == true)
            {
                result.ErrorCode = 13;
                result.ErrorText = "An account with the same email already exists";
                return(result);
            }

            var user = new User()
            {
                Email            = email,
                Name             = name,
                Address          = address,
                BirthDate        = birthDate,
                RegistrationDate = DateTime.Now
            };

            context.Add(user);

            if (context.SaveChanges() < 1)  // validation for Savechanges
            {
                result.ErrorCode = 13;
                result.ErrorText = "An error occured while saving data";
                return(result);
            }
            result.Data = user;
            return(result);
        }
        public Result <Project> PublishProject(string creatorEmail, string projectName
                                               , string category, string description, decimal projectGoal, DateTime creationDate, DateTime monthDuration, int estimatedMonthDuration)
        {
            var result = new Result <Project>();

            if (IsValidEmail(creatorEmail) == false)
            {
                result.ErrorCode = 1;
                result.ErrorText = "Email is not valid";

                return(result);
            }

            var context = new CrowDoDbContext();
            var creator = context.Set <User>()
                          .Where(c => c.Email == creatorEmail)
                          .SingleOrDefault();

            if (creator == null)
            {
                result.ErrorCode = 2;
                result.ErrorText = "User not registered";

                return(result);
            }

            var project = new Project()
            {
                ProjectName               = projectName,
                ProjectCategory           = category,
                ProjectGoal               = projectGoal,
                Description               = description,
                CreationDate              = creationDate,
                ExpirationDate            = monthDuration,
                EstimatedDurationInMonths = DateTime.Now.AddMonths(estimatedMonthDuration),
                IsAvailable               = true
            };

            creator.CreatedProjects.Add(project);
            creator.CreatedProjectsCount++;

            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 7;
                result.ErrorText = "An error occurred while saving data";

                return(result);
            }

            result.Data = project;
            return(result);
        }
Exemple #5
0
        public Result <bool> EditProject(int userId, int projectId, string NewProjectName, string newProjectCategory, string description,
                                         decimal newProjectGoal, DateTime monthDuration, int estimatedMonthDuration)
        {
            var result  = new Result <bool>();
            var context = new CrowDoDbContext();

            var updateProject = context.Set <Project>()
                                .SingleOrDefault(b => b.ProjectId == projectId);

            var user = context.Set <User>()
                       .Include(u => u.CreatedProjects)
                       .SingleOrDefault(u => u.UserId == userId);

            if (!user.CreatedProjects.Contains(updateProject))
            {
                result.ErrorCode = 15;
                result.ErrorText = "You don't have creator rights for this project";

                return(result);
            }

            if (updateProject == null)
            {
                result.ErrorCode = 22;
                result.ErrorText = "No project was found";
                return(result);
            }

            updateProject.ProjectName               = NewProjectName;
            updateProject.ProjectCategory           = newProjectCategory;
            updateProject.ProjectGoal               = newProjectGoal;
            updateProject.Description               = description;
            updateProject.ExpirationDate            = monthDuration;
            updateProject.EstimatedDurationInMonths = DateTime.Now.AddMonths(estimatedMonthDuration);

            if (newProjectGoal <= updateProject.Funds)
            {
                updateProject.IsSuccessful = true;
            }


            if (context.SaveChanges() < 1)  //** vaalidation for Savechanges : registration is ok or not
            {
                result.ErrorCode = 7;
                result.ErrorText = "No save";
                return(result);
            }

            result.Data = true;
            return(result);
        }
Exemple #6
0
        public Result <bool> DeleteProject(int userId, int projectId)
        {
            var result  = new Result <bool>();
            var context = new CrowDoDbContext();


            var project = context.Set <Project>()
                          .SingleOrDefault(p => p.ProjectId == projectId);

            var user = context.Set <User>()
                       .Include(u => u.CreatedProjects)
                       .SingleOrDefault(u => u.UserId == userId);

            if (!user.CreatedProjects.Contains(project))
            {
                result.ErrorCode = 15;
                result.ErrorText = "You don't have creator rights for this project";

                return(result);
            }

            if (project == null)
            {
                result.ErrorCode = 22;
                result.ErrorText = "No project was found";
                return(result);
            }

            user.CreatedProjects.Remove(project);

            project.IsAvailable = false;
            user.CreatedProjectsCount--;

            if (context.SaveChanges() < 1)  //** validation for Savechanges
            {
                result.ErrorCode = 7;
                result.ErrorText = "An error occurred while saving data";
                return(result);
            }


            result.Data = true;
            return(result);
        }
Exemple #7
0
        public Result <bool> AddMultimediaFile(int userId, int projectId, string multimediaFile)
        {
            var result  = new Result <bool>();
            var context = new CrowDoDbContext();

            var user = context.Set <User>()
                       .Include(u => u.CreatedProjects)
                       .SingleOrDefault(u => u.UserId == userId);

            var project = context.Set <Project>()
                          .Include(p => p.MultimediaFiles)
                          .SingleOrDefault(p => p.ProjectId == projectId);

            if (user.CreatedProjects.Contains(project))
            {
                result.ErrorCode = 15;
                result.ErrorText = "You don't have creator rights for this project";

                return(result);
            }

            project.MultimediaFiles.Add(new ProjectMedia()
            {
                FileName = multimediaFile
            });


            if (context.SaveChanges() < 1)  //** vaalidation for Savechanges : registration is ok or not
            {
                result.ErrorCode = 7;
                result.ErrorText = "An error occurred while saving data";
                return(result);
            }

            result.Data = true;
            return(result);
        }
        public Result <Project> GetProjectDetails(int projectId)
        {
            var context = new CrowDoDbContext();

            var project = context.Set <Project>()
                          .Include(p => p.RewardPackages)
                          .SingleOrDefault(p => p.ProjectId == projectId);

            var result = new Result <Project>();

            if (project == null)
            {
                result.ErrorCode = 22;
                result.ErrorText = "No project was found";
                return(result);
            }

            if (project.IsAvailable == false)
            {
                result.ErrorCode = 29;
                result.ErrorText = "Project not available";
                return(result);
            }

            project.Visits++;

            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 7;
                result.ErrorText = "There was an error communicating with the server";
                return(result);
            }

            result.Data = project;
            return(result);
        }
        public Result <bool> DeadlineCheck()     //Checks for expired Projects
        {
            var context = new CrowDoDbContext();
            var result  = new Result <bool>();

            var expiredProjects = context.Set <Project>()
                                  .Where(p => p.ExpirationDate <= DateTime.Now)
                                  .ToList();

            foreach (Project p in expiredProjects)
            {
                p.IsAvailable = false;
            }

            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 7;
                result.ErrorText = "There was an error communicating with the server";

                return(result);
            }

            return(result);
        }
        public Result <bool> FundProject(int userId, int projectId, int rewardPackageId)
        {
            var result = new Result <bool>();

            var context = new CrowDoDbContext();

            var backer = context.Set <User>()
                         .SingleOrDefault(c => c.UserId == userId);

            var package = context.Set <RewardPackage>()
                          .SingleOrDefault(c => c.RewardPackageId == rewardPackageId);

            var project = context.Set <Project>()
                          .Include(p => p.RewardPackages)
                          .SingleOrDefault(p => p.ProjectId == projectId);

            if (backer == null)
            {
                result.ErrorCode = 20;
                result.ErrorText = "User not registered";

                return(result);
            }

            if (package == null)
            {
                result.ErrorCode = 19;
                result.ErrorText = "Reward package not found";
                return(result);
            }

            if (project == null)
            {
                result.ErrorCode = 18;
                result.ErrorText = "Project not found";
                return(result);
            }

            if (project.IsAvailable == false)
            {
                result.ErrorCode = 29;
                result.ErrorText = "Project not available";
                return(result);
            }

            if (!project.RewardPackages.Contains(package))
            {
                result.ErrorCode = 25;
                result.ErrorText = "The selected RewardPackage isn't available for this project";
                return(result);
            }

            project.Funds += package.Price;

            if (project.Funds >= project.ProjectGoal)
            {
                project.IsSuccessful = true;
            }

            var backerReward = new LinkingTable
            {
                UserId          = backer.UserId,
                RewardPackageId = package.RewardPackageId,
                ProjectId       = projectId
            };

            context.Add(backerReward);

            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 7;
                result.ErrorText = "An error occurred while saving data";

                return(result);
            }

            result.Data = true;
            return(result);
        }
Exemple #11
0
        public Result <bool> AddRewardPackage(int userId, int projectId, string packageName, string rewardName, decimal price)
        {
            var result  = new Result <bool>();
            var context = new CrowDoDbContext();

            var rewardPackage = new RewardPackage()
            {
                PackageName = packageName,
                RewardName  = rewardName,
                Price       = price
            };

            var user = context.Set <User>()
                       .Include(u => u.CreatedProjects)
                       .SingleOrDefault(u => u.UserId == userId);

            var project = context.Set <Project>()
                          .Include(p => p.RewardPackages)
                          .SingleOrDefault(c => c.ProjectId == projectId);

            if (!user.CreatedProjects.Contains(project))
            {
                result.ErrorCode = 15;
                result.ErrorText = "You don't have creator rights for this project";

                return(result);
            }

            if (project == null)
            {
                result.ErrorCode = 22;
                result.ErrorText = "No project was found";
                return(result);
            }

            if (price == 0.0M)
            {
                result.ErrorCode = 10;
                result.ErrorText = "You have to give a Price";
                return(result);
            }

            if (price > project.ProjectGoal)
            {
                result.ErrorCode = 10;
                result.ErrorText = "Package price shouldn't exceed Goal amount!";
                return(result);
            }

            if (packageName == null)
            {
                result.ErrorCode = 11;
                result.ErrorText = "You have to give a Name to PackageReward";
                return(result);
            }

            if (rewardName == null)
            {
                result.ErrorCode = 12;
                result.ErrorText = "You have to give a Reward";
                return(result);
            }


            project.RewardPackages.Add(rewardPackage);


            if (context.SaveChanges() < 1)
            {
                result.ErrorCode = 7;
                result.ErrorText = "An error occurred while saving data";
                return(result);
            }

            result.Data = true;
            return(result);
        }