public async Task UpdateCharityInfoItem(Guid charitableEntityId, CharityInfoItemDto charityInfoDto) { var charityInfo = Repository.GetWhereAsQueryable(c => c.CharitableEntityId == charitableEntityId).First(); if (charityInfoDto.items != null) { // Removing all current charities / items var charityItems = await CharitableItemRepository.GetWhereAsync(p => p.CharitableInformationId == charityInfo.Id); if (charityItems != null) { CharitableItemRepository.DeleteRange(charityItems); } foreach (var item in charityInfoDto.items) { await CharitableItemRepository.AddAsync(new CharitableInformationItem() { CharitableInformationId = charityInfo.Id, ItemId = item }); } } await this.Repository.SaveAsync(); }
public async Task <ActionResult> UpdateCharityInfoItem(Guid id, [FromBody] CharityInfoItemDto charityDto) { // Check if the donor already exists var charityResponse = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id), true); if (charityResponse == null) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada."); return(NotFound(error)); } else if (string.IsNullOrWhiteSpace(charityResponse.Approver) || charityResponse.Status.ToUpper() != ApproverStatus.APPROVED.ToString() || charityResponse.Active == false) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não foi possível atualizar as informações. A entidade não está ativa ou aprovada."); return(BadRequest(error)); } if (charityDto.items != null && charityDto.items.Count > 0) { var distinctItems = charityDto.items.Distinct(); if (distinctItems.Count() != charityDto.items.Count()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não é possível inserir itens duplicados."); return(BadRequest(error)); } var lstItems = await ItemApplication.GetItemIn(charityDto.items); if (lstItems.Count() != charityDto.items.Count()) { ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Existem itens inválidos."); return(BadRequest(error)); } } await CharitableInformationApplication.UpdateCharityInfoItem(id, charityDto); return(Ok()); }