distributed-computing/tasks/mironov-eo/lab_3/worker-1/Program.cs
2023-12-04 23:02:10 +03:00

131 lines
3.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.Mvc;
List<CompanyDal> companies = new()
{
new CompanyDal() { CompanyId = Guid.NewGuid(), Name = "Microsoft", FieldOfActivity = "Информационные технологии", Location = "США"},
new CompanyDal() { CompanyId = Guid.NewGuid(), Name = "Додо пицца", FieldOfActivity = "Питание", Location = "Россия"},
new CompanyDal() { CompanyId = Guid.NewGuid(), Name = "Renault", FieldOfActivity = "Автомобилестроение", Location = "Франция"},
};
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("/Companies/", () =>
{
var result = companies.Select(r => new worker_1.Models.Company.GetList.CompanyResult()
{
CompanyId = r.CompanyId,
Name = r.Name,
FieldOfActivity = r.FieldOfActivity,
Location = r.Location,
}).ToArray();
return Results.Ok(result);
})
.WithName("List")
.WithOpenApi();
app.MapGet("/Companies/{companyId}", (Guid companyId) =>
{
var company = companies.FirstOrDefault(r => r.CompanyId == companyId);
if (company is null)
{
return Results.NotFound($"Не найдена компания {companyId}");
}
return Results.Json(new worker_1.Models.Company.Get.CompanyResult()
{
CompanyId = company.CompanyId,
Name = company.Name,
FieldOfActivity = company.FieldOfActivity,
Location = company.Location,
});
})
.WithName("Get")
.WithOpenApi();
app.MapPost("/Companies/", ([FromBody] worker_1.Models.Company.Create.CompanyForm request) =>
{
Guid companyId = Guid.NewGuid();
companies.Add(new CompanyDal()
{
CompanyId = companyId,
FieldOfActivity = request.FieldOfActivity,
Location = request.Location,
Name = request.Name,
});
return Results.Ok(companyId);
})
.WithName("Create")
.WithOpenApi();
app.MapPatch("/Companies/{companyId}", (Guid companyId, [FromBody] worker_1.Models.Company.Create.CompanyForm request) =>
{
var company = companies.FirstOrDefault(r => r.CompanyId == companyId);
if (company is null)
{
return Results.NotFound($"Не найдена компания {companyId}");
}
if (!string.IsNullOrEmpty(request.Name))
{
company.Name = request.Name;
}
if (!string.IsNullOrEmpty(request.Location))
{
company.Location = request.Location;
}
if (!string.IsNullOrEmpty(request.FieldOfActivity))
{
company.FieldOfActivity = request.FieldOfActivity;
}
return Results.Ok(company);
})
.WithName("Update")
.WithOpenApi();
app.MapDelete("/Companies/{companyId}", (Guid companyId) =>
{
var company = companies.FirstOrDefault(r => r.CompanyId == companyId);
if (company is null)
{
return Results.NotFound($"Не найдена компания {companyId}");
}
companies.Remove(company);
return Results.Ok(companyId);
})
.WithName("Delete")
.WithOpenApi();
app.Run();
public class CompanyDal
{
public Guid CompanyId { get; set; }
public string Name { get; set; }
public string FieldOfActivity { get; set; }
public string Location { get; set; }
}