165 lines
3.9 KiB
C#
165 lines
3.9 KiB
C#
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
builder.Services.AddSwaggerGen();
|
|
|
|
var app = builder.Build();
|
|
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI();
|
|
}
|
|
|
|
app.UseHttpsRedirection();
|
|
|
|
app.MapGet("/Skills/", () =>
|
|
{
|
|
return Results.Ok(Storage.Skills.ToArray());
|
|
})
|
|
.WithName("List")
|
|
.WithOpenApi();
|
|
|
|
app.MapGet("/Skills/{skillId}", (Guid skillId) =>
|
|
{
|
|
var skill = Storage.Skills.FirstOrDefault(s => s.Id == skillId);
|
|
|
|
if (skill == null)
|
|
{
|
|
return Results.NotFound($"Íå íàéäåíà ïðîôåññèÿ ñ èäåíòèôèêàòîðîì {skillId}");
|
|
}
|
|
|
|
return Results.Json(new Skill()
|
|
{
|
|
Id = skill.Id,
|
|
Name = skill.Name,
|
|
Level = skill.Level,
|
|
ProfessionId = skill.ProfessionId
|
|
});
|
|
})
|
|
.WithName("Get")
|
|
.WithOpenApi();
|
|
|
|
app.MapPost("/Skills/", (SkillRequest request) =>
|
|
{
|
|
if (Storage.Professions.FirstOrDefault(p => p.Id == request.ProfessionId) is null)
|
|
{
|
|
return Results.NotFound($"Íå íàéäåíà ïðîôåññèÿ ñ èäåíòèôèêàòîðîì {request.ProfessionId}");
|
|
}
|
|
|
|
var skillId = Guid.NewGuid();
|
|
|
|
Storage.Skills.Add(new Skill()
|
|
{
|
|
Id = skillId,
|
|
Name = request.Name,
|
|
Level = request.Level,
|
|
ProfessionId = request.ProfessionId
|
|
});
|
|
|
|
return Results.Ok(skillId);
|
|
})
|
|
.WithName("Create")
|
|
.WithOpenApi();
|
|
|
|
app.MapPatch("/Skills/{skillId}", (Guid skillId, SkillRequest request) =>
|
|
{
|
|
var skill = Storage.Skills.FirstOrDefault(s => s.Id == skillId);
|
|
if (skill == null)
|
|
{
|
|
Results.NotFound($"Íå íàéäåíî óìåíèå ñ èäåíòèôèêàòîðîì {skillId}");
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(request.Name))
|
|
{
|
|
skill.Name = request.Name;
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(request.Name))
|
|
{
|
|
skill.Level = request.Level;
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(request.Name))
|
|
{
|
|
skill.ProfessionId = request.ProfessionId;
|
|
}
|
|
|
|
return Results.Ok(skill);
|
|
})
|
|
.WithName("Update")
|
|
.WithOpenApi();
|
|
|
|
app.MapDelete("/Skills/{skillId}", (Guid skillId) =>
|
|
{
|
|
var skill = Storage.Skills.FirstOrDefault(s => s.Id == skillId);
|
|
if (skill == null)
|
|
{
|
|
Results.NotFound($"Íå íàéäåíî óìåíèå ñ èäåíòèôèêàòîðîì {skillId}");
|
|
}
|
|
|
|
Storage.Skills.Remove(skill);
|
|
return Results.Ok(skillId);
|
|
})
|
|
.WithName("Delete")
|
|
.WithOpenApi();
|
|
|
|
app.Run();
|
|
|
|
|
|
public class Profession
|
|
{
|
|
public Guid Id { get; set; }
|
|
|
|
public string Name { get; set; }
|
|
}
|
|
|
|
public class Skill
|
|
{
|
|
public Guid Id { get; set; }
|
|
|
|
public string Name { get; set; }
|
|
|
|
public Levels Level { get; set; }
|
|
|
|
public Guid ProfessionId { get; set; }
|
|
}
|
|
|
|
public class SkillRequest
|
|
{
|
|
public string Name { get; set; }
|
|
|
|
public Levels Level { get; set; }
|
|
|
|
public Guid ProfessionId { get; set; }
|
|
}
|
|
|
|
public enum Levels
|
|
{
|
|
None = 0,
|
|
Basic = 1,
|
|
Middle = 2,
|
|
Expert = 3
|
|
}
|
|
|
|
public class Storage
|
|
{
|
|
public static Profession[] Professions { get; set; }
|
|
|
|
public static List<Skill> Skills { get; set; }
|
|
|
|
static Storage()
|
|
{
|
|
var client = new HttpClient();
|
|
string Url = "http://worker-2:80/Professions/";
|
|
Professions = client.GetFromJsonAsync<Profession[]>(Url).Result;
|
|
|
|
Skills = new List<Skill>()
|
|
{
|
|
new Skill() { Id = Guid.NewGuid(), Name = "Knowledge of programming", Level = Levels.Expert, ProfessionId = Professions.FirstOrDefault(p => p.Name == "Software Developer").Id },
|
|
new Skill() { Id = Guid.NewGuid(), Name = "Stress resistance", Level = Levels.Expert, ProfessionId = Professions.FirstOrDefault(p => p.Name == "Software Developer").Id },
|
|
new Skill() { Id = Guid.NewGuid(), Name = "The ability to cook", Level = Levels.Middle, ProfessionId = Professions.FirstOrDefault(p => p.Name == "Cook").Id },
|
|
new Skill() { Id = Guid.NewGuid(), Name = "Knowledge of plumbing", Level = Levels.Middle, ProfessionId = Professions.FirstOrDefault(p => p.Name == "Plumber").Id }
|
|
};
|
|
}
|
|
} |