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();
        }
예제 #2
0
        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());
        }