SES-154 Endpoint zmiany statusu sklepikarza #80

Merged
s426134 merged 5 commits from SES-154 into dev 2021-01-21 18:22:20 +01:00
8 changed files with 29418 additions and 16 deletions

View File

@ -0,0 +1,41 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace SessionCompanion.Database.Migrations
{
public partial class shopkeepersupdate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.UpdateData(
table: "Shopkeepers",
keyColumn: "Id",
keyValue: 3,
column: "IsAvailable",
value: false);
migrationBuilder.UpdateData(
table: "Shopkeepers",
keyColumn: "Id",
keyValue: 5,
column: "IsAvailable",
value: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.UpdateData(
table: "Shopkeepers",
keyColumn: "Id",
keyValue: 3,
column: "IsAvailable",
value: true);
migrationBuilder.UpdateData(
table: "Shopkeepers",
keyColumn: "Id",
keyValue: 5,
column: "IsAvailable",
value: true);
}
}
}

View File

@ -21554,7 +21554,7 @@ namespace SessionCompanion.Database.Migrations
new
{
Id = 3,
IsAvailable = true,
IsAvailable = false,
Name = "Bohr Twarda Zbroja"
},
new
@ -21566,7 +21566,7 @@ namespace SessionCompanion.Database.Migrations
new
{
Id = 5,
IsAvailable = true,
IsAvailable = false,
Name = "Zielony spod Gruszkowego Lasu"
},
new

View File

@ -863,7 +863,7 @@ namespace SessionCompanion.Database
{
Id = 3,
Name = "Bohr Twarda Zbroja",
IsAvailable = true
IsAvailable = false
},
new Shopkeeper
{
@ -875,7 +875,7 @@ namespace SessionCompanion.Database
{
Id = 5,
Name = "Zielony spod Gruszkowego Lasu",
IsAvailable = true
IsAvailable = false
},
new Shopkeeper
{

View File

@ -14,5 +14,6 @@ namespace SessionCompanion.Services.Interfaces
public interface IShopkeeperService : IServiceBase<ShopkeeperViewModel, Shopkeeper>
{
Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper(ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel);
Task<Either<SuccessResponse, ErrorResponse>> ChangeShopkeeperStatus(int shopkeeperId, bool availability);
}
}

View File

@ -19,6 +19,42 @@ namespace SessionCompanion.Services.Services
{
public ShopkeeperService(IMapper mapper, IRepository<Shopkeeper> repository) : base(mapper, repository)
{ }
/// <summary>
/// Funkcja zmienia status sprzedawcy
/// </summary>
/// <param name="shopkeeperId"></param>
/// <param name="availability"></param>
/// <returns>SuccesResponse/ErrorResponse</returns>
public async Task<Either<SuccessResponse, ErrorResponse>> ChangeShopkeeperStatus(int shopkeeperId, bool availability)
{
try
{
var shopkeepers = await Repository.Get().ToListAsync();
if (availability)
{
foreach (var shopkeeper in shopkeepers)
{
if (shopkeeper.Id.Equals(shopkeeperId))
shopkeeper.IsAvailable = true;
else
shopkeeper.IsAvailable = false;
await Repository.Update(shopkeeper);
}
await Repository.Save();
return new SuccessResponse("Shopkeepers updated") { SuccessCode = 200 };
}
var newActiveShopkeeper = shopkeepers.Where(c => c.Id.Equals(shopkeeperId)).Single();
newActiveShopkeeper.IsAvailable = false;
await Repository.Update(newActiveShopkeeper);
await Repository.Save();
return new SuccessResponse("Shopkeepers updated") { SuccessCode = 200 };
}
catch (Exception e)
{
return new ErrorResponse() { StatusCode = 500, Message = e.Message };
}
}
public async Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper(ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel)
{
try

View File

@ -12,6 +12,7 @@ namespace SessionCompanion.Controllers
using SessionCompanion.ViewModels.CharacterArmorViewModels;
using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels;
using SessionCompanion.ViewModels.CharacterWeaponViewModels;
using System.ComponentModel.DataAnnotations;
[Route("api/character/equipment")]
[ApiController]
@ -38,7 +39,7 @@ namespace SessionCompanion.Controllers
/// <param name="characterId"> Id postaci </param>
/// <returns> Lista pozostałego ekwipunku lub błąd </returns>
[HttpGet("getOtherEquipment")]
public async Task<Either<List<CharacterOtherEquipmentWithDetailsViewModel>, ErrorResponse>> GetCharacterOtherEquipment(int characterId)
public async Task<Either<List<CharacterOtherEquipmentWithDetailsViewModel>, ErrorResponse>> GetCharacterOtherEquipment([Required] int characterId)
{
return await this._characterOtherEquipmentService.GetCharacterOtherEquipmentList(characterId);
}
@ -49,7 +50,7 @@ namespace SessionCompanion.Controllers
/// <param name="characterId"> Id postaci </param>
/// <returns> Lista pozostałego ekwipunku lub błąd </returns>
[HttpGet("getArmors")]
public async Task<Either<List<CharacterArmorViewModelDetails>, ErrorResponse>> GetCharacterArmors(int characterId)
public async Task<Either<List<CharacterArmorViewModelDetails>, ErrorResponse>> GetCharacterArmors([Required] int characterId)
{
return await this._characterArmorService.GetCharacterArmorsTaskList(characterId);
}
@ -60,7 +61,7 @@ namespace SessionCompanion.Controllers
/// <param name="characterId"> Id postaci </param>
/// <returns> Lista broni lub błąd </returns>
[HttpGet("getWeapons")]
public async Task<Either<List<CharacterWeaponWithWeaponDetailsViewModel>, ErrorResponse>> GetCharacterWeapons(int characterId)
public async Task<Either<List<CharacterWeaponWithWeaponDetailsViewModel>, ErrorResponse>> GetCharacterWeapons([Required] int characterId)
{
return await this._characterWeaponService.GetCharacterWeaponsList(characterId);
}
@ -72,7 +73,7 @@ namespace SessionCompanion.Controllers
/// <param name="newArmorId"> Id nowej zbroi </param>
/// <returns>SuccessResponse/ErrorResponse</returns>
[HttpPut("changeArmor")]
public async Task<Either<SuccessResponse, ErrorResponse>> ChangeCharacterArmor(int characterId, int newArmorId)
public async Task<Either<SuccessResponse, ErrorResponse>> ChangeCharacterArmor([Required] int characterId, [Required] int newArmorId)
{
var response = await _characterArmorService.ChangeCharacterArmor(characterId, newArmorId);
return response;
@ -84,7 +85,7 @@ namespace SessionCompanion.Controllers
/// <param name="characterArmorViewModel"> View model z odpowiednimi parameterami </param>
/// <returns>SuccessResponse/ErrorResponse</returns>
[HttpPut("addArmor")]
public async Task<Either<SuccessResponse, ErrorResponse>> AddCharacterArmor(CharacterArmorViewModel characterArmorViewModel)
public async Task<Either<SuccessResponse, ErrorResponse>> AddCharacterArmor([Required] CharacterArmorViewModel characterArmorViewModel)
{
if (!ModelState.IsValid)
return new ErrorResponse() { StatusCode = 500, Message = "Invalid model!" };
@ -106,7 +107,7 @@ namespace SessionCompanion.Controllers
/// <param name="characterWeaponViewModel"> View model z odpowiednimi parameterami </param>
/// <returns>SuccessResponse/ErrorResponse</returns>
[HttpPut("addWeapon")]
public async Task<Either<SuccessResponse, ErrorResponse>> AddCharacterWeapon(CharacterWeaponViewModel characterWeaponViewModel)
public async Task<Either<SuccessResponse, ErrorResponse>> AddCharacterWeapon([Required] CharacterWeaponViewModel characterWeaponViewModel)
{
if (!ModelState.IsValid)
return new ErrorResponse() { StatusCode = 500, Message = "Invalid model!" };
@ -127,7 +128,7 @@ namespace SessionCompanion.Controllers
/// <param name=characterWeaponViewModel> View model z odpowiednimi parameterami </param>
/// <returns>SuccessResponse/ErrorResponse</returns>
[HttpPut("changeWeapon")]
public async Task<Either<SuccessResponse, ErrorResponse>> ChangeCharacterWeapon(CharacterWeaponViewModel characterWeaponViewModel)
public async Task<Either<SuccessResponse, ErrorResponse>> ChangeCharacterWeapon([Required] CharacterWeaponViewModel characterWeaponViewModel)
{
if (!ModelState.IsValid)
return new ErrorResponse() { StatusCode = 500, Message = "Invalid model!" };

View File

@ -31,12 +31,16 @@ namespace SessionCompanion.Controllers
return _service.Get().ToList();
}
[HttpPost("createNewShopkeeper")]
public async Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper([Required] ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel)
/// <summary>
/// Endpoint służacy do zmiany statusu sklepikarza
/// </summary>
/// <param name="shopkeeperId"></param>
/// <param name="availability"></param>
/// <returns>SuccesResponse/ErrorResponse</returns>
[HttpPut("changeShopkeeperStatus")]
public async Task<Either<SuccessResponse, ErrorResponse>> ChangeShopkeeperStatus([Required] int shopkeeperId, [Required] bool availability)
{
if (!ModelState.IsValid)
return new ErrorResponse() { StatusCode = 500, Message = "Model is invalid" };
return await _service.CreateNewShopKeeper(shopkeeperWithItemsViewModel);
return await _service.ChangeShopkeeperStatus(shopkeeperId, availability);
}
}
}