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 <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); }