Exemple #1
0
        public async Task <ActionResult> UpdateCharityInfoImage(Guid id, [FromForm] CharityInfoImageUpdateDto charityDto)
        {
            // Check if the donor already exists
            var charityResponse = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id), true);

            var imageName = charityDto.Name.ToLower();

            if (imageName != "picture" && imageName != "image01" && imageName != "image02")
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O nome da imagem deve ser picture, image01 ou image02");
                return(BadRequest(error));
            }

            if (charityResponse == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            if (charityResponse.Information == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"As infomações da entidade beneficente não foram cadastradas.");
                return(BadRequest(error));
            }

            await CharitableInformationApplication.UpdateCharityInfoImage(id, charityDto, charityResponse.Information, Request);

            return(Ok());
        }
Exemple #2
0
        public async Task <ActionResult> UpdateCharityInfo(Guid id, [FromBody] CharityInfoUpdateDto 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));
            }

            if (charityResponse.Information == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"As infomações da entidade beneficente não foram cadastradas.");
                return(BadRequest(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));
            }

            await CharitableInformationApplication.UpdateCharityInfo(id, charityDto, Request);

            return(Ok());
        }
Exemple #3
0
        public async Task <ActionResult> UpdateCharity(Guid id, [FromBody] CharityUpdateDto charityDto, [FromQuery] bool pending_data = false)
        {
            // Check if the donor already exists
            var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id));

            if (charity == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            if (!charity.Cnpj.Equals(charityDto.Cnpj))
            {
                // Check if the charity entity already exists
                bool hasCharity = await CharitableEntityApplication.ExistCharity((c) => c.Cnpj.Equals(charityDto.Cnpj));

                if (hasCharity)
                {
                    ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {charityDto.Cnpj}, já existe.");
                    return(BadRequest(error));
                }
            }

            await CharitableEntityApplication.UpdateCharity(id, charityDto, pending_data);

            return(Ok());
        }
Exemple #4
0
        public async Task <ActionResult> CreateCharityInfo(Guid id, [FromForm] CharityInfoCreateDto 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));
            }

            if (charityResponse.Information != null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"As informações da entidade beneficente já foram cadastradas.");
                return(BadRequest(error));
            }
            else
            {
                if (charityResponse.Status.ToUpper() != ApproverStatus.APPROVED.ToString() ||
                    charityResponse.Active == false)
                {
                    ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Não foi possível cadastrar as informações da entidade benefiecente porque a entidade não está ativa ou aprovada.");
                    return(BadRequest(error));
                }
            }

            await CharitableInformationApplication.CreateCharityInfo(id, charityDto, Request);

            return(CreatedAtRoute("GetCharityById", new { id }, null));;
        }
Exemple #5
0
        public async Task <ActionResult <PagedResponse <CharityResponseDto> > > GetCharities([FromQuery] FilterCharityParams filterParams,
                                                                                             [FromQuery] PaginationParams paginationParams)
        {
            PagedResponse <CharityResponseDto> pagedResponse = await CharitableEntityApplication.GetAllCharities((c) => (c.IsActive && c.Status.Equals(ApproverStatus.APPROVED) && c.CharitableInformation != null), filterParams, paginationParams, true);

            return(Ok(pagedResponse));
        }
Exemple #6
0
        public async Task <ActionResult <IEnumerable <PendingCharityByStatesDto> > > GetPendingCharities([FromQuery] FilterParams filterParams,
                                                                                                         [FromQuery] PaginationParams paginationParams)
        {
            var pagedResponse = await CharitableEntityApplication.GetCharityPendingByState();

            return(Ok(pagedResponse));
        }
Exemple #7
0
        public async Task <ActionResult <PagedResponse <CharityResponseDto> > > GetCharitiesResticted([FromQuery] FilterCharityParams filterParams,
                                                                                                      [FromQuery] PaginationParams paginationParams)
        {
            PagedResponse <CharityResponseDto> pagedResponse = await CharitableEntityApplication.GetAllCharities((c) => (!c.IsActive && string.IsNullOrWhiteSpace(c.Approver)), filterParams, paginationParams, true);

            return(Ok(pagedResponse));
        }
Exemple #8
0
 public CharitiesController(CharitableEntityApplication charitableEntityApplication,
                            CharitableInformationApplication charitableInformationApplication,
                            UserApplication userApplication,
                            ItemApplication itemApplication)
 {
     this.CharitableEntityApplication      = charitableEntityApplication;
     this.CharitableInformationApplication = charitableInformationApplication;
     this.UserApplication = userApplication;
     this.ItemApplication = itemApplication;
 }
        public async Task <ActionResult> CreateDonationOnline([FromBody] DonationCreateDto donationCreateDto)
        {
            if (donationCreateDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O parâmetro, DonationCreate, não pode ser nulo.");
                return(BadRequest(error));
            }

            // Check if charity exists
            var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(donationCreateDto.CharitableEntityId), true);

            if (charity == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {donationCreateDto.CharitableEntityId}, não foi encontrada.");
                return(NotFound(error));
            }

            // Check if user exists
            var user = await UserApplication.GetUser((u) => u.Id.Equals(donationCreateDto.UserId));

            if (user == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O usuário, {donationCreateDto.UserId}, não foi encontrado.");
                return(NotFound(error));
            }

            if (donationCreateDto?.DonationItem.Count() > 0)
            {
                var lstItems = await ItemApplication.GetCharityItemIn(charity.Information.Id, donationCreateDto.DonationItem.Select(e => e.ItemId).ToList());

                if (lstItems.Count() != donationCreateDto.DonationItem.Count())
                {
                    ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Existem itens inválidos.");
                    return(BadRequest(error));
                }
            }

            var donationId = await DonationApplication.CreateDonation(donationCreateDto, true);

            try
            {
                // Sent an email
                var donor = await UserApplication.GetUserOwnerDto(donationCreateDto.UserId);

                string message = string.Format(" <h1>Olá, {0}</h1><h2>Doação online realizada com sucesso no valor total de {1} reais para a entidade {2} ({3}).</h2>", donor.Name, donationCreateDto.Total.ToString("C"), charity.Name, charity.Cnpj);

                await this.EmailSender.SendEmailAsync(user.Login, $"Doa Sonhos - Doação Online", message);
            }
            catch (Exception)
            {
            }

            return(CreatedAtRoute("GetDonationById", new { id = donationId }, null));
        }
Exemple #10
0
        public async Task <ActionResult <CharityResponseDto> > GetCharityRestrictedById(Guid id)
        {
            CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true);

            if (charityDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            return(Ok(charityDto));
        }
 public DonationsController(DonationApplication donationApplication,
                            ItemApplication itemApplication,
                            CharitableEntityApplication charitableEntityApplication,
                            IEmailSender emailSender,
                            UserApplication userApplication)
 {
     this.DonationApplication         = donationApplication;
     this.ItemApplication             = itemApplication;
     this.CharitableEntityApplication = charitableEntityApplication;
     this.UserApplication             = userApplication;
     this.EmailSender = emailSender;
 }
Exemple #12
0
        public async Task <ActionResult <IEnumerable <ApprovalResponseDto> > > GetCharityApproval(Guid id)
        {
            CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true);

            if (charityDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            var approvals = await CharitableEntityApplication.GetCharityApprovalResponseDto(a => a.CharitableEntityId.Equals(id));

            return(Ok(approvals));
        }
Exemple #13
0
        public async Task <ActionResult> UpdateCharityStatus(Guid id, CharityStatusRequestDto charityStatusRequestDto)
        {
            // Check if the donor already exists
            var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id));

            if (charity == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            await CharitableEntityApplication.UpdateCharityStatus(id, charityStatusRequestDto);

            return(Ok());
        }
Exemple #14
0
        public async Task <ActionResult> DeleteCharity(Guid id)
        {
            // Check if the donor exists
            CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id));

            if (charityDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            await CharitableEntityApplication.DeleteCharity(id);

            return(NoContent());
        }
Exemple #15
0
        public async Task <ActionResult <CharityResponseDto> > GetCharityById(Guid id)
        {
            CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true);

            if (charityDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }
            else if (!charityDto.Active || string.IsNullOrWhiteSpace(charityDto.Approver))
            {
                if (charityDto.Status != ApproverStatus.PENDING_DATA.ToString())
                {
                    ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, está inativa.");
                    return(BadRequest(error));
                }
            }

            return(Ok(charityDto));
        }
Exemple #16
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());
        }
Exemple #17
0
        public async Task <ActionResult <CharityStatusResponseDto> > GetCharityStatus([FromQuery] string cnpj, [FromQuery] Guid id)
        {
            CharityStatusResponseDto charity = null;

            if (!string.IsNullOrEmpty(cnpj))
            {
                charity = await CharitableEntityApplication.GetCharityStatus(c => c.Cnpj.Equals(cnpj));
            }
            else if (id != null && id != Guid.Empty)
            {
                charity = await CharitableEntityApplication.GetCharityStatus(c => c.Id.Equals(id));
            }
            else
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O cnpj ou id devem ser informados.");
                return(BadRequest(error));
            }


            return(Ok(charity));
        }
Exemple #18
0
        public async Task <ActionResult <CharityInfoItemResponseDto> > GetCharityItem(Guid id)
        {
            CharityResponseDto charityDto = await CharitableEntityApplication.GetCharity(c => c.Id.Equals(id), true);

            if (charityDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }


            if (charityDto.Information == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.NotFound, $"As informações complementares da entidade beneficente não foram cadastradas.");
                return(NotFound(error));
            }

            var charityInfoItems = await CharitableInformationApplication.GetCharityInfoItem(p => p.CharitableInformationId == charityDto.Information.Id);

            return(Ok(charityInfoItems));
        }
Exemple #19
0
        public async Task <IActionResult> CreateCharity([FromBody] CharityCreateDto charityDto)
        {
            var userDto = await UserApplication.GetUserDto(u => u.Login.ToLower().Equals(charityDto.Login.ToLower()));

            if (userDto != null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O usuário, {charityDto.Login}, já existe.");
                return(BadRequest(error));
            }

            // Check if the charity entity already exists
            bool hasCharity = await CharitableEntityApplication.ExistCharity((c) => c.Cnpj.Equals(charityDto.Cnpj));

            if (hasCharity)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {charityDto.Cnpj}, já existe.");
                return(BadRequest(error));
            }

            var charityId = await CharitableEntityApplication.CreateCharity(charityDto);

            return(CreatedAtRoute("GetCharityById", new { id = charityId }, null));
        }
Exemple #20
0
        public async Task <ActionResult> ApproveCharity(Guid id, [FromBody] CharityApproveDto charityApproveDto)
        {
            // Check if the donor already exists
            var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(id));

            if (charity == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {id}, não foi encontrada.");
                return(NotFound(error));
            }

            var approvals = await CharitableEntityApplication.GetCharityApprovals(a => a.CharitableEntityId.Equals(id));

            object statusObj;

            Enum.TryParse(typeof(ApproverStatus), charityApproveDto.Status, out statusObj);

            if (statusObj == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O status '${charityApproveDto.Status}' não é válido.");
                return(NotFound(error));
            }

            ApproverStatus status = (ApproverStatus)statusObj;

            if (approvals != null && approvals.OrderByDescending(a => a.Date).First().Status == (int)status)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade já se encontra nesse status '${charityApproveDto.Status}'.");
                return(NotFound(error));
            }

            await CharitableEntityApplication.UpdateCharityPending(id, charityApproveDto);


            return(Ok());
        }
        public async Task <ActionResult> CreateDonationPresencial([FromBody] DonationCreateDto donationCreateDto)
        {
            if (donationCreateDto == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O parâmetro, DonationCreate, não pode ser nulo.");
                return(BadRequest(error));
            }

            // Check if the charity exists
            var charity = await CharitableEntityApplication.GetCharity((c) => c.Id.Equals(donationCreateDto.CharitableEntityId), true);

            if (charity == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"A entidade beneficente, {donationCreateDto.CharitableEntityId}, não foi encontrada.");
                return(NotFound(error));
            }

            // Check if user exists
            var user = await UserApplication.GetUser((u) => u.Id.Equals(donationCreateDto.UserId));

            if (user == null)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O usuário, {donationCreateDto.UserId}, não foi encontrado.");
                return(NotFound(error));
            }

            if (donationCreateDto.Total != 0)
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"O valor total não pode ser diferente de zero para doações presenciais.");
                return(BadRequest(error));
            }

            if (donationCreateDto?.DonationItem.Count() > 0)
            {
                var lstItems = await ItemApplication.GetCharityItemIn(charity.Information.Id, donationCreateDto.DonationItem.Select(e => e.ItemId).ToList());

                if (lstItems.Count() != donationCreateDto.DonationItem.Count())
                {
                    ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"Existem itens inválidos.");
                    return(BadRequest(error));
                }
            }
            else
            {
                ErrorMessage error = new ErrorMessage((int)HttpStatusCode.BadRequest, $"É necessário pelo menos um item válido para doações presenciais.");
                return(BadRequest(error));
            }

            var donationId = await DonationApplication.CreateDonation(donationCreateDto, false);

            try
            {
                // Sent an email
                var donor = await UserApplication.GetUserOwnerDto(donationCreateDto.UserId);

                string message = string.Format(" <h2>Olá, {0}</h2><h3>Parabéns! Você realizou uma doação presencial para a entidade {1} ({2}).</h3>", donor.Name, charity.Name, charity.Cnpj);

                await this.EmailSender.SendEmailAsync(user.Login, $"Doa Sonhos - Doação Presencial", message);
            }
            catch (Exception ex) {
                Console.WriteLine(ex);
            }

            return(CreatedAtRoute("GetDonationById", new { id = donationId }, null));
        }