public async Task <TicketChat> CreateMessage(int ticket_id, TicketChat chat) { int userId = await base.GetUserId(httpContext.GetCurrentAuth()); using (var _context = contextFactory.CreateDbContext()) { var auth = httpContext.GetCurrentAuth(); var currentUser = await _context.Users.Where(x => x.Auth == auth).FirstOrDefaultAsync(); var ticket = await _context.SupportTicket.Include(x => x.User).Where(x => x.Id == ticket_id && (x.User.Auth == httpContext.GetCurrentAuth() || currentUser.Role == "Admin")).FirstOrDefaultAsync(); if (ticket == null) { throw new ArgumentException("There isn't a ticket with that id for this person!"); } chat.CreatorId = userId; ticket.TicketChat.Add(chat); await _context.SaveChangesAsync(); return(chat); } }
public async Task <IActionResult> CreateMessage([FromRoute] int ticket_id, [FromBody] TicketChat chat) { try { await _context.CreateMessage(ticket_id, chat); var ticket = await _context.GetTicket(ticket_id); var dto = mapper.Map <SupportTicketViewModel>(ticket); return(Ok(dto)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task CreateMessage() { // Inject CreateIdentity(Users[0].Auth); // Arrange var ticket = new SupportTicket() { Title = "Gosho", Description = "pesho", UserId = Users[0].Id, }; TicketChat message; using (var a = factory.CreateDbContext()) { await a.AddAsync(ticket); await a.SaveChangesAsync(); message = new TicketChat() { TicketId = ticket.Id, Message = "Some message" }; await a.AddAsync(message); await a.SaveChangesAsync(); ticket = await a.SupportTicket.Include(x => x.User).Where(x => x.Id == ticket.Id).FirstOrDefaultAsync(); } var expected = mapper.Map <SupportTicketViewModel>(ticket); foreach (var a in expected.TicketChat) { a.IsCurrentUser = true; a.CreatorId = 1; } // Act var result = await controller.CreateMessage(ticket.Id, message); // Assert Assert.Equal(Serialize(expected), Serialize(((OkObjectResult)result).Value)); }
public static void Seed(IContextFactory factory) { using (var a = factory.CreateDbContext()) { // Re-creates database a.Database.EnsureDeleted(); a.Database.EnsureCreated(); // Seeds users Users = new Users[4] { new Users() { Auth = "George" }, new Users() { Auth = "SecondAuth", Role = "Admin" }, new Users() { Auth = "ThirdAuth" }, new Users() { Auth = "auth0|5f955e7b9b8822006ee06870", Name = "RealAccount" }, }; a.AddRange(Users); a.SaveChanges(); // Seeds wishlist WishLists = new WishList[3] { new WishList() { Transportation = "BICYCLING", UserId = Users[0].Id }, new WishList() { Transportation = "DRIVING", UserId = Users[1].Id }, new WishList() { Transportation = "WALKING", UserId = Users[2].Id }, }; a.AddRange(WishLists); a.SaveChanges(); // Seeds tickets SupportTickets = new SupportTicket[3] { new SupportTicket() { UserId = 1, Title = "First title", Description = "First description" }, new SupportTicket() { UserId = 2, Title = "Second title", Description = "Second description" }, new SupportTicket() { UserId = 3, Title = "Third title", Description = "Third description" }, }; a.AddRange(SupportTickets); a.SaveChanges(); // Seeds ticket chats SupportChat = new TicketChat[3] { new TicketChat() { TicketId = 1, CreatorId = 1, Message = "Created by FirstAuth for First Title ticket" }, new TicketChat() { TicketId = 2, CreatorId = 2, Message = "Created by SecondAuth for Second Title ticket" }, new TicketChat() { TicketId = 3, CreatorId = 3, Message = "Created by ThirdAuth for Third Title ticket" }, }; a.AddRange(SupportChat); a.SaveChanges(); UserTrips = new UserTrips[3] { new UserTrips() { Distance = 50, Duration = 12, Name = "trip to bg", Transportation = "DRIVING", UserId = Users[0].Id }, new UserTrips() { Distance = 510, Duration = 122, Name = "trip to en", Transportation = "BICYCLING", UserId = Users[0].Id }, new UserTrips() { Distance = 540, Duration = 1222, Name = "trip to nl", Transportation = "WALKING", UserId = Users[1].Id }, }; a.AddRange(UserTrips); a.SaveChanges(); Locations = new Locations[5] { new Locations() { Lang = 5, Long = 3, Name = "BS", TripId = UserTrips[0].Id, PlaceId = "123" }, new Locations() { Lang = 5, Long = 3, Name = "zaw", TripId = UserTrips[0].Id, PlaceId = "123" }, new Locations() { Lang = 5, Long = 3, Name = "awesda", WishlistId = WishLists[0].Id, PlaceId = "123" }, new Locations() { Lang = 5, Long = 53, Name = "zafg", WishlistId = WishLists[0].Id, PlaceId = "123" }, new Locations() { Lang = 5, Long = 3, Name = "hjm", TripId = UserTrips[2].Id, PlaceId = "123" }, }; //Because entity is retarded and inverses order if i dont do this a.Add(Locations[0]); a.SaveChanges(); a.Add(Locations[1]); a.SaveChanges(); a.Add(Locations[2]); a.SaveChanges(); a.Add(Locations[3]); a.SaveChanges(); a.Add(Locations[4]); a.SaveChanges(); } }