public async Task <IActionResult> Edit(int id, [FromBody] FileDto fileDto) { if (fileDto == null) { return(BadRequest("You send an invalid file")); } var fileInDb = _fileService.Exist(id) .Include(t => t.FileTags) .Include(cp => cp.FileCompanies) .Include(c => c.FileClubs).FirstOrDefault(); if (fileInDb == null) { return(BadRequest("File doesn't exist!")); } var errorMsg = _fileService.CheckSameName(fileDto.Name); if (errorMsg != null) { return(BadRequest(errorMsg)); } // Clear Relationships if (!_fileService.ClearRelations(fileInDb)) { return(BadRequest("File can't be updated!")); } // Validate and Add Tags var tagErrMsg = _fileService.AddTagR(fileInDb, fileDto); if (!string.IsNullOrWhiteSpace(tagErrMsg)) { return(BadRequest(tagErrMsg)); } // Validate and Add Companies var companyErrMsg = _fileService.AddCompanyR(fileInDb, fileDto); if (!string.IsNullOrWhiteSpace(companyErrMsg)) { return(BadRequest(companyErrMsg)); } // Validate and Add Clubs var clubsErrMsg = _fileService.AddClubR(fileInDb, fileDto); if (!string.IsNullOrWhiteSpace(clubsErrMsg)) { return(BadRequest(clubsErrMsg)); } fileDto = _fileService.Edit(fileInDb, fileDto); var saved = await _fileService.SaveEf(); if (!saved) { return(BadRequest("File can't be save!")); } return(Ok(_fileService.Exist(fileDto.Id).ProjectTo <FileDto>(_mapper.ConfigurationProvider).FirstOrDefault())); }