// POST /api/team/5 public HttpResponseMessage Post(ServiceModel.AddTeamViewModel addTeamViewModel) { if (!ModelState.IsValid) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.ToJson().ToString())); } var existingTeam = context.GetAll <DomainModel.Team>() .FirstOrDefault(u => u.Name.Equals(addTeamViewModel.Name)); if (existingTeam != null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, "Team name already in use")); } var teamCreator = context.GetAll <DomainModel.User>() .FirstOrDefault(u => u.Id == addTeamViewModel.CreatedById); if (teamCreator == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Team Owner Specified")); } var team = new DomainModel.Team(addTeamViewModel.Name, teamCreator); team.IsOpen = addTeamViewModel.IsPublic; context.Add(team); context.SaveChanges(); return(ResourceOkResponse(team.MapToBasicServiceModel())); }
public Thing(Team team, User owner) : this() { this.DateCreated = DateTime.Now; this.Status = ThingStatus.InProgress; this.Team = team; this.TeamId = team.Id; this.SetOwner(owner); }
public virtual MailMessage DeniedTeam(User user, Team team) { var mailMessage = new MailMessage { Subject = "TeamThing - Team Access Denied" }; mailMessage.To.Add(user.EmailAddress); mailMessage.From = new MailAddress(fromAddress); //ViewBag.Data = someObject; ViewData.Model = new TeamAccessChanged { Team = team }; PopulateBody(mailMessage, viewName: "DeniedTeam"); return mailMessage; }
public static ServiceModel.TeamBasic MapToBasicServiceModel(this DomainModel.Team t) { if (t == null) { return(null); } return(new ServiceModel.TeamBasic() { Id = t.Id, Name = t.Name, OwnerId = t.OwnerId, IsPublic = t.IsOpen, ImagePath = t.ImagePath ?? "/images/GenericUserImage.gif", Administrators = t.TeamMembers.Where(tm => tm.Role == DomainModel.TeamUserRole.Administrator).Select(tm => tm.UserId).ToArray() }); }
public static ServiceModel.Team MapToServiceModel(this DomainModel.Team t) { if (t == null) { return(null); } return(new ServiceModel.Team() { Id = t.Id, Name = t.Name, IsPublic = t.IsOpen, ImagePath = t.ImagePath ?? "/images/GenericUserImage.gif", TeamMembers = t.Members.Where(tm => tm.Status == DomainModel.TeamUserStatus.Approved).Select(MapToBasicServiceModel).ToList(), PendingTeamMembers = t.Members.Where(tm => tm.Status == DomainModel.TeamUserStatus.Pending).Select(MapToBasicServiceModel).ToList(), Administrators = t.Members.Where(tm => tm.Role == DomainModel.TeamUserRole.Administrator).Select(tm => tm.UserId).ToArray(), Owner = t.Owner.MapToBasicServiceModel() }); }
public HttpResponseMessage Post(ServiceModel.AddTeamViewModel addTeamViewModel) { if (!ModelState.IsValid) { return(new HttpResponseMessage <JsonValue>(ModelState.ToJson(), HttpStatusCode.BadRequest)); } var existingTeam = context.GetAll <DomainModel.Team>() .FirstOrDefault(u => u.Name.Equals(addTeamViewModel.Name)); if (existingTeam != null) { ModelState.AddModelError("", "Team name already in use"); return(new HttpResponseMessage <JsonValue>(ModelState.ToJson(), HttpStatusCode.BadRequest)); } var teamCreator = context.GetAll <DomainModel.User>() .FirstOrDefault(u => u.Id == addTeamViewModel.CreatedById); if (teamCreator == null) { ModelState.AddModelError("", "Invalid Team Owner Specified"); return(new HttpResponseMessage <JsonValue>(ModelState.ToJson(), HttpStatusCode.BadRequest)); } var team = new DomainModel.Team(addTeamViewModel.Name, teamCreator); team.IsOpen = addTeamViewModel.IsPublic; context.Add(team); context.SaveChanges(); var sTeam = team.MapToBasicServiceModel(); var response = new HttpResponseMessage <ServiceModel.TeamBasic>(sTeam, HttpStatusCode.Created); response.Headers.Location = new Uri(Request.RequestUri, "/api/team/" + sTeam.Id.ToString()); return(response); }
private static void TestContext() { Console.WriteLine("Running Tests"); User newUser; User newUser2; Team newTeam; Thing thing; using (var context = new TeamThingContext()) { //add some new data newUser = new User("*****@*****.**"); newUser.FirstName = "Josh"; newUser.LastName = "Holt"; context.Add(newUser); context.SaveChanges(); //add some new data newUser2 = new User("*****@*****.**"); newUser2.FirstName = "Josh2"; newUser2.LastName = "Holt2"; context.Add(newUser2); context.SaveChanges(); newTeam = new Team("Closed Team", newUser, false); newTeam.TeamMembers.Add(new TeamUser(newTeam, newUser2)); context.Add(newTeam); context.SaveChanges(); thing = new Thing(newTeam, newUser); thing.Description = "Test Thing"; thing.AssignedTo.Add(new UserThing(thing, newUser2, newUser)); thing.AssignedTo.Add(new UserThing(thing, newUser, newUser)); context.Add(thing); context.SaveChanges(); } using (var context = new TeamThingContext()) { newUser = context.GetAll<User>().FirstOrDefault(p => p.EmailAddress == newUser.EmailAddress); newUser2 = context.GetAll<User>().FirstOrDefault(p => p.EmailAddress == newUser2.EmailAddress); newTeam = context.GetAll<Team>().FirstOrDefault(p => p.Name == newTeam.Name); thing = context.GetAll<Thing>().FirstOrDefault(p => p.Description == thing.Description); ////recall the saved items //IProduct retrievedProduct = context.Products.FirstOrDefault(p => p.Name == newProduct.Name); //ICategory retrievedCategory = context.Categories.FirstOrDefault(p => p.Name == newCategory.Name); //Debug.Assert(retrievedProduct != null); //Debug.Assert(retrievedCategory!= null); //Debug.Assert(retrievedProduct.Category == retrievedCategory); //Debug.Assert(retrievedCategory.Products.Contains(retrievedProduct)); Debug.Assert(newUser != null); Debug.Assert(newUser2 != null); Debug.Assert(newTeam != null); Debug.Assert(thing != null); Debug.Assert(thing.Owner != null); Debug.Assert(newTeam.Owner != null); Debug.Assert(newUser.Teams.Count > 0); Debug.Assert(newUser2.Teams.Count > 0); Debug.Assert(newUser2.Things.Count > 0); Debug.Assert(newTeam.TeamMembers.Count > 0); //Debug.Assert(newTeam.TeamThings.Count > 0); Debug.Assert(thing.AssignedTo.Count > 0); // //clean up // //Category is marked as dependent, so it will be removed automatically with the product context.Delete(thing); context.Delete(newTeam); context.Delete(newUser); context.Delete(newUser2); context.SaveChanges(); } Console.WriteLine("All Tests Pass!"); }
private static void TestContext() { Console.WriteLine("Running Tests"); User newUser; User newUser2; Team newTeam; Thing thing; using (var context = new TeamThingContext()) { //add some new data newUser = new User("UNIT TEST USER"); newUser.FirstName = "Josh"; newUser.LastName = "Holt"; context.Add(newUser); context.SaveChanges(); //add some new data newUser2 = new User("UNIT TEST USER 2"); newUser2.FirstName = "Josh2"; newUser2.LastName = "Holt2"; context.Add(newUser2); context.SaveChanges(); newTeam = new Team("UNIT TEST TEAM", newUser, false); newTeam.Members.Add(new TeamUser(newTeam, newUser2)); context.Add(newTeam); context.SaveChanges(); thing = new Thing(newTeam, newUser); thing.Description = "UNIT TEST THING"; thing.AssignedTo.Add(new UserThing(thing, newUser2, newUser)); thing.AssignedTo.Add(new UserThing(thing, newUser, newUser)); context.Add(thing); context.SaveChanges(); thing.UpdateStatus(newUser2, ThingStatus.Delayed); thing.Complete(newUser2); context.SaveChanges(); } using (var context = new TeamThingContext()) { newUser = context.GetAll<User>().FirstOrDefault(p => p.EmailAddress == newUser.EmailAddress); newUser2 = context.GetAll<User>().FirstOrDefault(p => p.EmailAddress == newUser2.EmailAddress); newTeam = context.GetAll<Team>().FirstOrDefault(p => p.Name == newTeam.Name); thing = context.GetAll<Thing>().FirstOrDefault(p => p.Description == thing.Description); Debug.Assert(newUser != null); Debug.Assert(newUser2 != null); Debug.Assert(newTeam != null); Debug.Assert(thing != null); Debug.Assert(thing.Owner != null); Debug.Assert(newTeam.Owner != null); Debug.Assert(newUser.Teams.Count > 0); Debug.Assert(newUser2.Teams.Count > 0); Debug.Assert(newUser2.Things.Count > 0); Debug.Assert(newTeam.Members.Count > 0); //Debug.Assert(newTeam.TeamThings.Count > 0); Debug.Assert(thing.AssignedTo.Count > 0); Debug.Assert(thing.History.Count == 2); Debug.Assert(thing.History[0].EditedBy != null); Debug.Assert(thing.History[0].EditedByUserId != 0); Debug.Assert(thing.History[0].Thing == thing); Debug.Assert(thing.History[0].ThingId == thing.Id); // //clean up // //Category is marked as dependent, so it will be removed automatically with the product context.Delete(thing); context.Delete(newTeam); context.Delete(newUser); context.Delete(newUser2); context.SaveChanges(); } Console.WriteLine("All Tests Pass!"); }
public virtual MailMessage InvitedToTeam(User sendTo, User inviter, Team team) { var mailMessage = new MailMessage { Subject = "TeamThing - Invited to Join Team" }; mailMessage.To.Add(sendTo.EmailAddress); mailMessage.From = new MailAddress(fromAddress); //ViewBag.Data = someObject; ViewData.Model = new TeamAccessChanged { Team = team }; PopulateBody(mailMessage, viewName: "InvitedToTeam"); return mailMessage; }
// POST /api/team/5 public HttpResponseMessage Post(ServiceModel.AddTeamViewModel addTeamViewModel) { if (!ModelState.IsValid) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.ToJson().ToString())); } var existingTeam = context.GetAll<DomainModel.Team>() .FirstOrDefault(u => u.Name.Equals(addTeamViewModel.Name)); if (existingTeam != null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, "Team name already in use")); } var teamCreator = context.GetAll<DomainModel.User>() .FirstOrDefault(u => u.Id == addTeamViewModel.CreatedById); if (teamCreator == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Team Owner Specified")); } var team = new DomainModel.Team(addTeamViewModel.Name, teamCreator); team.IsOpen = addTeamViewModel.IsPublic; context.Add(team); context.SaveChanges(); return ResourceOkResponse(team.MapToBasicServiceModel()); }