Merge pull request 'SES-154 Endpoint zmiany statusu sklepikarza' (#80) from SES-154 into dev

Reviewed-on: #80
This commit is contained in:
Łukasz Góreczny 2021-01-21 18:22:17 +01:00
commit 32d645ea19
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 new
{ {
Id = 3, Id = 3,
IsAvailable = true, IsAvailable = false,
Name = "Bohr Twarda Zbroja" Name = "Bohr Twarda Zbroja"
}, },
new new
@ -21566,7 +21566,7 @@ namespace SessionCompanion.Database.Migrations
new new
{ {
Id = 5, Id = 5,
IsAvailable = true, IsAvailable = false,
Name = "Zielony spod Gruszkowego Lasu" Name = "Zielony spod Gruszkowego Lasu"
}, },
new new

View File

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

View File

@ -14,5 +14,6 @@ namespace SessionCompanion.Services.Interfaces
public interface IShopkeeperService : IServiceBase<ShopkeeperViewModel, Shopkeeper> public interface IShopkeeperService : IServiceBase<ShopkeeperViewModel, Shopkeeper>
{ {
Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper(ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel); 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) 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) public async Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper(ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel)
{ {
try try

View File

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

View File

@ -31,12 +31,16 @@ namespace SessionCompanion.Controllers
return _service.Get().ToList(); return _service.Get().ToList();
} }
[HttpPost("createNewShopkeeper")] /// <summary>
public async Task<Either<SuccessResponse, ErrorResponse>> CreateNewShopKeeper([Required] ShopkeeperWithItemsViewModel shopkeeperWithItemsViewModel) /// 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 await _service.ChangeShopkeeperStatus(shopkeeperId, availability);
return new ErrorResponse() { StatusCode = 500, Message = "Model is invalid" };
return await _service.CreateNewShopKeeper(shopkeeperWithItemsViewModel);
} }
} }
} }