diff --git a/Controllers/ProjectsController.cs b/Controllers/ProjectsController.cs index f2e7d1f..d6d8ee6 100644 --- a/Controllers/ProjectsController.cs +++ b/Controllers/ProjectsController.cs @@ -38,8 +38,7 @@ namespace TicketManager.Controllers [ProducesResponseType(StatusCodes.Status200OK)] public async Task> GetProjects() { - return await _projectRepo.ListAsync(); - // GetAllProjectsAsync(); + return await _projectRepo.List(); } /// @@ -58,204 +57,165 @@ namespace TicketManager.Controllers [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task> GetProject(int id) { - Project project = await _projectRepo.GetByIdAsync(id); + Project project = await _projectRepo.Get(id); if (project == null) { return NotFound(); } return project; } - /// - /// Updates a specific project. - /// - /// - /// Sample request: - /// - /// PUT: api/Projects/3 - /// { - /// "id": "357727fd-5262-4522-b8a3-38271d43de84", - /// "firstName": "Thomas", - /// "lastName": "Price", - /// "presentation": "New Team?!", - /// "email": "tp@mail.com", - /// "phone": "0198237645" - /// } - /// - /// - /// Returns the modified project - /// Request was succesful but no content is changed - /// If the required project is null - [HttpPut("{id}")] - [ProducesResponseType(StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task PutProject(int id, Project project) - { - if (id != project.Id) { return BadRequest(); } - - try - { - await _projectRepo.UpdateAsync(project); - } - catch (DbUpdateConcurrencyException) - { - if (!_projectRepo.Exists(id)) - { - return NotFound(); - } - else - { - throw; - } - } - - return NoContent(); - } - - /// - /// Creates a project. - /// - /// - /// Sample request: - /// - /// POST: api/Projects/ - /// { - /// "firstName": "Thomas", - /// "lastName": "Price", - /// "presentation": "New Team?!", - /// "email": "tp@mail.com", - /// "phone": "0198237645" - /// } - /// - /// - /// Returns the created project - [HttpPost] - [ProducesResponseType(StatusCodes.Status201Created)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task> PostProject(Project project) - { - if (!ModelState.IsValid) { return BadRequest(); } - await _projectRepo.AddAsync(project); - - return CreatedAtAction("GetProject", new { id = project.Id }, project); - } - - - - - /// - /// Deletes a project. - /// - /// - /// Sample request: - /// - /// DELETE: api/Projects/5 - /// - /// - /// Returns the deleted project - [ProducesResponseType(StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - [HttpDelete("{id}")] - public async Task> DeleteProject(int id) - { - var project = await _projectRepo.GetByIdAsync(id); - if (project == null) - { - return NotFound(); - } - await _projectRepo.DeleteAsync(id); - return project; - } - - /// - /// Gets a project members. - /// - /// - /// Sample request: - /// - /// GET: api/Projects/5/Members - /// - /// - /// Returns the project members - [ProducesResponseType(StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - [HttpGet("{id}/members")] - public async Task>> GetProjectMembers(int id) - { - Project project = await _projectRepo.GetByIdAsync(id); - if (project == null) - { return NotFound(); } - return project.GetMembers(); - } - - /// - /// Updates a project members. - /// - /// - /// Sample request: - /// - /// PUT: api/Projects/5/Members - /// { - /// "id": "357727fd-5262-4522-b8a3-38271d43de84", - /// "firstName": "Thomas", - /// "lastName": "Price", - /// "presentation": "New Team?!", - /// "email": "tp@mail.com", - /// "phone": "0198237645" - /// } - /// - /// No content - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - [HttpPut("{id}/members")] - public async Task> SetProjectMembers(int id, List projectMembers) - { - Project project = await _projectRepo.GetByIdAsync(id); - project.SetMembers(projectMembers); - try - { - await _projectRepo.UpdateAsync(project); - } - catch (DbUpdateException /* ex */) - { - //Log the error (uncomment ex variable name and write a log.) - ModelState.AddModelError("", "Unable to save changes. " + - "Try again, and if the problem persists, " + - "see your system administrator."); - } - return NoContent(); - } - // /// - // /// Assign a user to a project. + // /// Updates a specific project. // /// // /// // /// Sample request: // /// - // /// POST: api/Projects/addmembers - // /// [{ + // /// PUT: api/Projects/3 + // /// { // /// "id": "357727fd-5262-4522-b8a3-38271d43de84", // /// "firstName": "Thomas", // /// "lastName": "Price", // /// "presentation": "New Team?!", // /// "email": "tp@mail.com", // /// "phone": "0198237645" - // /// }] + // /// } // /// // /// - // /// Returns the created project + // /// Returns the modified project + // /// Request was succesful but no content is changed + // /// If the required project is null + // [HttpPut("{id}")] + // [ProducesResponseType(StatusCodes.Status200OK)] // [ProducesResponseType(StatusCodes.Status204NoContent)] // [ProducesResponseType(StatusCodes.Status404NotFound)] - // [HttpPut("{id}/addMembers")] - // public async Task> AddMembersToProject(int id, List usersToAdd) + // public async Task PutProject(int id, Project project) // { - // if (usersToAdd == null) - // { - // return BadRequest(); - // } - // Project project = await GetProjectByIdAsync(id); - // project.AddMembers(usersToAdd); + // if (id != project.Id) { return BadRequest(); } + // try // { - // await _context.SaveChangesAsync(); + // await _projectRepo.Update(project); + // } + // catch (DbUpdateConcurrencyException) + // { + // if (!_projectRepo.Exists(id)) + // { + // return NotFound(); + // } + // else + // { + // throw; + // } + // } + + // return NoContent(); + // } + + // /// + // /// Creates a project. + // /// + // /// + // /// Sample request: + // /// + // /// POST: api/Projects/ + // /// { + // /// "firstName": "Thomas", + // /// "lastName": "Price", + // /// "presentation": "New Team?!", + // /// "email": "tp@mail.com", + // /// "phone": "0198237645" + // /// } + // /// + // /// + // /// Returns the created project + // [HttpPost] + // [ProducesResponseType(StatusCodes.Status201Created)] + // [ProducesResponseType(StatusCodes.Status404NotFound)] + // public async Task> PostProject(Project project) + // { + // if (!ModelState.IsValid) { return BadRequest(); } + // await _projectRepo.AddAsync(project); + + // return CreatedAtAction("GetProject", new { id = project.Id }, project); + // } + + + + + // /// + // /// Deletes a project. + // /// + // /// + // /// Sample request: + // /// + // /// DELETE: api/Projects/5 + // /// + // /// + // /// Returns the deleted project + // [ProducesResponseType(StatusCodes.Status200OK)] + // [ProducesResponseType(StatusCodes.Status404NotFound)] + // [HttpDelete("{id}")] + // public async Task> DeleteProject(int id) + // { + // var project = await _projectRepo.GetByIdAsync(id); + // if (project == null) + // { + // return NotFound(); + // } + // await _projectRepo.DeleteAsync(id); + // return project; + // } + + // /// + // /// Gets a project members. + // /// + // /// + // /// Sample request: + // /// + // /// GET: api/Projects/5/Members + // /// + // /// + // /// Returns the project members + // [ProducesResponseType(StatusCodes.Status200OK)] + // [ProducesResponseType(StatusCodes.Status404NotFound)] + // [HttpGet("{id}/members")] + // public async Task>> GetProjectMembers(int id) + // { + // Project project = await _projectRepo.GetByIdAsync(id); + // if (project == null) + // { return NotFound(); } + // return project.GetMembers(); + // } + + // /// + // /// Updates a project members. + // /// + // /// + // /// Sample request: + // /// + // /// PUT: api/Projects/5/Members + // /// { + // /// "id": "357727fd-5262-4522-b8a3-38271d43de84", + // /// "firstName": "Thomas", + // /// "lastName": "Price", + // /// "presentation": "New Team?!", + // /// "email": "tp@mail.com", + // /// "phone": "0198237645" + // /// } + // /// + // /// No content + // [ProducesResponseType(StatusCodes.Status204NoContent)] + // [ProducesResponseType(StatusCodes.Status404NotFound)] + // [HttpPut("{id}/members")] + // public async Task> SetProjectMembers(int id, List projectMembers) + // { + // Project project = await _projectRepo.GetByIdAsync(id); + // if (project == null) + // { + // return NotFound(); + // } + // project.SetMembers(projectMembers); + // try + // { + // await _projectRepo.UpdateAsync(project); // } // catch (DbUpdateException /* ex */) // { @@ -267,44 +227,87 @@ namespace TicketManager.Controllers // return NoContent(); // } - // /// - // /// Remove a user to a project. - // /// - // /// - // /// Sample request: - // /// - // /// PUT: api/Projects/removemembers - // /// [{ - // /// "id": "357727fd-5262-4522-b8a3-38271d43de84", - // /// "firstName": "Thomas", - // /// "lastName": "Price", - // /// "presentation": "New Team?!", - // /// "email": "tp@mail.com", - // /// "phone": "0198237645" - // /// }] - // /// - // /// - // /// Returns the created project - // [ProducesResponseType(StatusCodes.Status204NoContent)] - // [ProducesResponseType(StatusCodes.Status404NotFound)] - // [HttpPut("{id}/removeMembers")] - // public async Task> RemoveMembersFromProject(int id, List usersToRemove) - // { - // Project project = await GetProjectByIdAsync(id); - // project.RemoveMembers(usersToRemove); - // try - // { - // await _context.SaveChangesAsync(); - // } - // catch (DbUpdateException /* ex */) - // { - // //Log the error (uncomment ex variable name and write a log.) - // ModelState.AddModelError("", "Unable to save changes. " + - // "Try again, and if the problem persists, " + - // "see your system administrator."); - // } - // return NoContent(); - // } + // // /// + // // /// Assign a user to a project. + // // /// + // // /// + // // /// Sample request: + // // /// + // // /// POST: api/Projects/addmembers + // // /// [{ + // // /// "id": "357727fd-5262-4522-b8a3-38271d43de84", + // // /// "firstName": "Thomas", + // // /// "lastName": "Price", + // // /// "presentation": "New Team?!", + // // /// "email": "tp@mail.com", + // // /// "phone": "0198237645" + // // /// }] + // // /// + // // /// + // // /// Returns the created project + // // [ProducesResponseType(StatusCodes.Status204NoContent)] + // // [ProducesResponseType(StatusCodes.Status404NotFound)] + // // [HttpPut("{id}/addMembers")] + // // public async Task> AddMembersToProject(int id, List usersToAdd) + // // { + // // if (usersToAdd == null) + // // { + // // return BadRequest(); + // // } + // // Project project = await GetProjectByIdAsync(id); + // // project.AddMembers(usersToAdd); + // // try + // // { + // // await _context.SaveChangesAsync(); + // // } + // // catch (DbUpdateException /* ex */) + // // { + // // //Log the error (uncomment ex variable name and write a log.) + // // ModelState.AddModelError("", "Unable to save changes. " + + // // "Try again, and if the problem persists, " + + // // "see your system administrator."); + // // } + // // return NoContent(); + // // } + + // // /// + // // /// Remove a user to a project. + // // /// + // // /// + // // /// Sample request: + // // /// + // // /// PUT: api/Projects/removemembers + // // /// [{ + // // /// "id": "357727fd-5262-4522-b8a3-38271d43de84", + // // /// "firstName": "Thomas", + // // /// "lastName": "Price", + // // /// "presentation": "New Team?!", + // // /// "email": "tp@mail.com", + // // /// "phone": "0198237645" + // // /// }] + // // /// + // // /// + // // /// Returns the created project + // // [ProducesResponseType(StatusCodes.Status204NoContent)] + // // [ProducesResponseType(StatusCodes.Status404NotFound)] + // // [HttpPut("{id}/removeMembers")] + // // public async Task> RemoveMembersFromProject(int id, List usersToRemove) + // // { + // // Project project = await GetProjectByIdAsync(id); + // // project.RemoveMembers(usersToRemove); + // // try + // // { + // // await _context.SaveChangesAsync(); + // // } + // // catch (DbUpdateException /* ex */) + // // { + // // //Log the error (uncomment ex variable name and write a log.) + // // ModelState.AddModelError("", "Unable to save changes. " + + // // "Try again, and if the problem persists, " + + // // "see your system administrator."); + // // } + // // return NoContent(); + // // } diff --git a/Controllers/ProjectsController2.cs b/Controllers/ProjectsController_working.cs similarity index 81% rename from Controllers/ProjectsController2.cs rename to Controllers/ProjectsController_working.cs index a76c51f..3936677 100644 --- a/Controllers/ProjectsController2.cs +++ b/Controllers/ProjectsController_working.cs @@ -15,13 +15,13 @@ // [Produces("application/json")] // [Route("api/v1/[controller]")] // [ApiController] -// public class ProjectsController2 : ControllerBase +// public class ProjectsController : ControllerBase // { -// private readonly AppDbContext _context; +// private readonly IProjectRepository _projectRepo; -// public ProjectsController2(AppDbContext context) +// public ProjectsController(IProjectRepository projectRepo) // { -// _context = context; +// _projectRepo = projectRepo; // } // /// @@ -36,9 +36,10 @@ // /// Returns all existing projects // [HttpGet] // [ProducesResponseType(StatusCodes.Status200OK)] -// public async Task>> GetProjects() +// public async Task> GetProjects() // { -// return await GetAllProjectsAsync(); +// return await _projectRepo.ListAsync(); +// // GetAllProjectsAsync(); // } // /// @@ -57,11 +58,8 @@ // [ProducesResponseType(StatusCodes.Status404NotFound)] // public async Task> GetProject(int id) // { -// Project project = await GetProjectByIdAsync(id); -// if (project == null) -// { -// return NotFound(); -// } +// Project project = await _projectRepo.GetByIdAsync(id); +// if (project == null) { return NotFound(); } // return project; // } @@ -91,20 +89,15 @@ // [ProducesResponseType(StatusCodes.Status404NotFound)] // public async Task PutProject(int id, Project project) // { -// if (id != project.Id) -// { -// return BadRequest(); -// } - -// _context.Entry(project).State = EntityState.Modified; +// if (id != project.Id) { return BadRequest(); } // try // { -// await _context.SaveChangesAsync(); +// await _projectRepo.UpdateAsync(project); // } // catch (DbUpdateConcurrencyException) // { -// if (!ProjectExists(id)) +// if (!_projectRepo.Exists(id)) // { // return NotFound(); // } @@ -139,8 +132,8 @@ // [ProducesResponseType(StatusCodes.Status404NotFound)] // public async Task> PostProject(Project project) // { -// _context.Projects.Add(project); -// await _context.SaveChangesAsync(); +// if (!ModelState.IsValid) { return BadRequest(); } +// await _projectRepo.AddAsync(project); // return CreatedAtAction("GetProject", new { id = project.Id }, project); // } @@ -163,13 +156,12 @@ // [HttpDelete("{id}")] // public async Task> DeleteProject(int id) // { -// var project = await _context.Projects.FindAsync(id); +// var project = await _projectRepo.GetByIdAsync(id); // if (project == null) // { // return NotFound(); // } -// _context.Projects.Remove(project); -// await _context.SaveChangesAsync(); +// await _projectRepo.DeleteAsync(id); // return project; // } @@ -188,7 +180,7 @@ // [HttpGet("{id}/members")] // public async Task>> GetProjectMembers(int id) // { -// Project project = await GetProjectByIdAsync(id); +// Project project = await _projectRepo.GetByIdAsync(id); // if (project == null) // { return NotFound(); } // return project.GetMembers(); @@ -216,11 +208,15 @@ // [HttpPut("{id}/members")] // public async Task> SetProjectMembers(int id, List projectMembers) // { -// Project project = await GetProjectByIdAsync(id); +// Project project = await _projectRepo.GetByIdAsync(id); +// if (project == null) +// { +// return NotFound(); +// } // project.SetMembers(projectMembers); // try // { -// await _context.SaveChangesAsync(); +// await _projectRepo.UpdateAsync(project); // } // catch (DbUpdateException /* ex */) // { @@ -314,31 +310,8 @@ // // return NoContent(); // // } -// private bool ProjectExists(int id) -// { -// return _context.Projects.Any(e => e.Id == id); -// } -// private async Task>> GetAllProjectsAsync() -// { -// return await makeProjectsQueryAsync() -// .ToListAsync(); -// } -// private async Task GetProjectByIdAsync(int id) -// { -// return await makeProjectsQueryAsync() -// .FirstOrDefaultAsync(p => p.Id == id); -// } -// private IQueryable makeProjectsQueryAsync() -// { -// return _context.Projects -// .Include(p => p.Assignments) -// .ThenInclude(a => a.User) -// .Include(p => p.Tickets) -// .Include(p => p.Manager) -// .Include(p => p.Files); -// } // } // } diff --git a/Data/GenericRepository.cs b/Data/GenericRepository.cs new file mode 100644 index 0000000..ac7d4e8 --- /dev/null +++ b/Data/GenericRepository.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; + +namespace TicketManager.Data +{ + public class GenericRepository : IGenericRepository where T : class + { + protected readonly AppDbContext _context; + protected readonly DbSet _dbSet; + public GenericRepository(AppDbContext context) + { + _context = context; + _dbSet = _context.Set(); + } + + public void Add(T entity) + { + _dbSet.Add(entity); + } + + public void Delete(T entity) + { + if (_context.Entry(entity).State == EntityState.Detached) + { _dbSet.Attach(entity); } + _dbSet.Remove(entity); + } + + public async Task> Find(int id, Expression> expr) + { + return await _dbSet.Where(expr).AsNoTracking().ToListAsync(); + } + + public virtual async Task Get(int id) + { + return await _dbSet.FindAsync(id); + } + public virtual async Task> List() + { + return await _dbSet.AsNoTracking().ToListAsync(); + } + + public void Update(T entity) + { + _dbSet.Attach(entity); + _context.Entry(entity).State = EntityState.Modified; + } + } +} \ No newline at end of file diff --git a/Data/IProjectRepository.cs b/Data/IProjectRepository.cs deleted file mode 100644 index aba71e3..0000000 --- a/Data/IProjectRepository.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using TicketManager.Models; - -namespace TicketManager.Data -{ - public interface IProjectRepository - { - Task> ListAsync(); - Task GetByIdAsync(int id); - Task AddAsync(Project project); - Task UpdateAsync(Project project); - Task DeleteAsync(int id); - bool Exists(int id); - - } -} \ No newline at end of file diff --git a/Data/Interfaces/IGenericRepository.cs b/Data/Interfaces/IGenericRepository.cs new file mode 100644 index 0000000..e8594d8 --- /dev/null +++ b/Data/Interfaces/IGenericRepository.cs @@ -0,0 +1,20 @@ +using System; +using System.Linq.Expressions; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace TicketManager.Data +{ + public interface IGenericRepository where T : class + { + Task> List(); + Task Get(int id); + Task> Find(int id, Expression> expr); + + void Add(T entity); + + void Update(T entity); + + void Delete(T entity); + } +} \ No newline at end of file diff --git a/Data/Interfaces/IProjectRepository.cs b/Data/Interfaces/IProjectRepository.cs new file mode 100644 index 0000000..ea8c756 --- /dev/null +++ b/Data/Interfaces/IProjectRepository.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using TicketManager.Models; + +namespace TicketManager.Data +{ + public interface IProjectRepository : IGenericRepository + { + bool Exists(int id); + Task> GetMembers(int id); + Task SetMembers(int id, List usersToAdd); + } +} \ No newline at end of file diff --git a/Data/ProjectRepository working.cs b/Data/ProjectRepository working.cs new file mode 100644 index 0000000..c63560c --- /dev/null +++ b/Data/ProjectRepository working.cs @@ -0,0 +1,57 @@ +// using System.Threading.Tasks; +// using TicketManager.Models; +// using System.Linq; +// using Microsoft.EntityFrameworkCore; +// using System.Collections.Generic; +// using Microsoft.AspNetCore.Mvc; + +// namespace TicketManager.Data +// { +// public class ProjectRepository : IProjectRepository +// { +// private readonly AppDbContext _context; +// private readonly IQueryable _query; +// public ProjectRepository(AppDbContext context) +// { +// _context = context; +// _query = _context.Projects +// .Include(p => p.Assignments) +// .ThenInclude(a => a.User) +// .Include(p => p.Tickets) +// .Include(p => p.Manager) +// .Include(p => p.Files); +// } + +// public Task AddAsync(Project project) +// { +// _context.Projects.Add(project); +// return _context.SaveChangesAsync(); +// } + +// public async Task DeleteAsync(int id) +// { +// Project project = await GetByIdAsync(id); +// _context.Projects.Remove(project); +// return await _context.SaveChangesAsync(); +// } + +// public async Task GetByIdAsync(int id) +// { +// return await _query.FirstOrDefaultAsync(p => p.Id == id); +// } + +// public async Task> ListAsync() +// { +// return await _query.ToListAsync(); +// } + +// public Task UpdateAsync(Project project) +// { +// _context.Entry(project).State = EntityState.Modified; +// return _context.SaveChangesAsync(); +// } +// public bool Exists(int id) +// { return _context.Projects.Any(e => e.Id == id); } + +// } +// } \ No newline at end of file diff --git a/Data/ProjectRepository.cs b/Data/ProjectRepository.cs index 6a5ced5..7349bfd 100644 --- a/Data/ProjectRepository.cs +++ b/Data/ProjectRepository.cs @@ -3,56 +3,44 @@ using TicketManager.Models; using System.Linq; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; -using Microsoft.AspNetCore.Mvc; namespace TicketManager.Data { - public class ProjectRepository : IProjectRepository + public class ProjectRepository : GenericRepository, IProjectRepository { - private readonly AppDbContext _context; private readonly IQueryable _query; - public ProjectRepository(AppDbContext context) + public ProjectRepository(AppDbContext context) : base(context) { - _context = context; - _query = _context.Projects - .Include(p => p.Assignments) - .ThenInclude(a => a.User) + _query = _dbSet + .Include(p => p.Assignments).ThenInclude(a => a.User) .Include(p => p.Tickets) .Include(p => p.Manager) - .Include(p => p.Files); + .Include(p => p.Files) + .AsNoTracking(); } - public Task AddAsync(Project project) - { - _context.Projects.Add(project); - return _context.SaveChangesAsync(); - } - - public async Task DeleteAsync(int id) - { - Project project = await GetByIdAsync(id); - _context.Projects.Remove(project); - return await _context.SaveChangesAsync(); - } - - public async Task GetByIdAsync(int id) + public override async Task Get(int id) { return await _query.FirstOrDefaultAsync(p => p.Id == id); } - public async Task> ListAsync() + public override async Task> List() { return await _query.ToListAsync(); } - public Task UpdateAsync(Project project) - { - _context.Entry(project).State = EntityState.Modified; - return _context.SaveChangesAsync(); - } - public bool Exists(int id) - { return _context.Projects.Any(e => e.Id == id); } + { return _dbSet.Any(e => e.Id == id); } + public async Task> GetMembers(int id) + { + Project project = await Get(id); + return project.GetMembers(); + } + public async Task SetMembers(int id, List usersToAdd) + { + Project project = await Get(id); + project.SetMembers(usersToAdd); + } } } \ No newline at end of file diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index d81c005..42e74be 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -1,30 +1,30 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:15556", - "sslPort": 44341 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "weatherforecast", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "TicketManager": { - "commandName": "Project", - "launchBrowser": true, - "launchUrl": "weatherforecast", - "applicationUrl": "https://localhost:5001;http://localhost:5000", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:15556", + "sslPort": 44341 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "weatherforecast", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "TicketManager": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "weatherforecast", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:5001;http://localhost:5000" + } + } +} \ No newline at end of file