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