public async Task <ServiceResult <CatFeedingModel> > FeedAsync(CatFeedingCreateModel info) { CatInDbModel cat = await catDatabase.GetAsync(info.CatId); if (cat == null) { return(new ServiceResult <CatFeedingModel>(ServiceResultStatus.ItemNotFound, "Cat is not found")); } UserInDbModel user = await userDatabase.GetAsync(info.UserId); if (user == null) { return(new ServiceResult <CatFeedingModel>(ServiceResultStatus.ItemNotFound, "User is not found")); } if (!await catSharingDatabase.IsCatSharedWithUserAsync(info.UserId, info.CatId)) { return(new ServiceResult <CatFeedingModel>(ServiceResultStatus.ActionNotAllowed, "You cannot feed this cat")); } await catFeedingdatabase.CreateAsync(mapper.Map <CatFeedingCreateInDbModel, CatFeedingCreateModel>(info)); return(new ServiceResult <CatFeedingModel>(ServiceResultStatus.NoContent)); }
public async Task <ServiceResult <CatSharingModel> > ShareAsync(CatSharingCreateModel info, int ownerId) { UserInDbModel userInDb = await userDatabase.GetAsync(info.UserId); if (userInDb == null) { return(new ServiceResult <CatSharingModel>(ServiceResultStatus.ItemNotFound, "User to share cannot be found")); } CatInDbModel cat = await catDatabase.GetAsync(info.CatId); if (cat == null) { return(new ServiceResult <CatSharingModel>(ServiceResultStatus.ItemNotFound, "Cat is not found")); } if (cat.OwnerId != ownerId) { return(new ServiceResult <CatSharingModel>(ServiceResultStatus.CantShareWithUser, "This user cannot share the cat")); } if (!await IsCatSharedWithUser(info.UserId, info.CatId)) { await catSharingDatabase.CreateAsync(mapper.Map <CatSharingCreateInDbModel, CatSharingCreateModel>(info)); } return(new ServiceResult <CatSharingModel>(ServiceResultStatus.CatIsShared)); }
public async Task <ServiceResult <CatGetServiceModel> > GetAsync(int id) { CatInDbModel cat = await catDatabase.GetAsync(id); if (cat == null) { return(new ServiceResult <CatGetServiceModel>(ServiceResultStatus.ItemNotFound, "Cat is not found")); } return(new ServiceResult <CatGetServiceModel>(ServiceResultStatus.ItemRecieved, mapper.Map <CatGetServiceModel, CatInDbModel>(cat))); }