public async Task <Guid> CreateCharity(CharityCreateDto charityDto) { User user = new User(Guid.NewGuid(), charityDto.Login.ToLower(), charityDto.Password.ToSHA512(), LoginType.CHARITABLE_ENTITY, Guid.NewGuid(), true); var charitable = this.Mapper.Map <CharitableEntity>(charityDto); charitable.Status = ApproverStatus.PENDING; charitable.IsActive = false; charitable.ApproverData = null; charitable.Approver = string.Empty; charitable.Id = Guid.NewGuid(); charitable.UserId = user.Id; var approval = new Approval() { Id = Guid.NewGuid(), CharitableEntityId = charitable.Id, Date = DateTime.UtcNow.ToBrazilianTimeZone(), Message = "Análise Pendente", Status = (int)ApproverStatus.PENDING }; var lstRole = await RoleRepository.GetWhereAsync(r => r.Name.ToLower().Equals("charitable_entity")); if (!lstRole.Any()) { throw new Exception("Cannot find role charitable_entity"); } await UserRoleRepository.AddAsync(new UserRole() { User = user, RoleId = lstRole.First().Id }); await this.Repository.AddAsync(charitable); await ApprovalRepository.AddAsync(approval); await this.Repository.SaveAsync(); return(charitable.Id); }
public async Task UpdateCharity(Guid id, CharityUpdateDto charityDto, bool pending_data) { var charityModel = Repository.GetWhereAsQueryable(c => c.Id.Equals(id)).First(); var charitableEntity = this.Mapper.Map <CharitableEntity>(charityDto); charitableEntity.Id = charityModel.Id; charitableEntity.Status = charityModel.Status; charitableEntity.Approver = charityModel.Approver; charitableEntity.ApproverData = charityModel.ApproverData; charitableEntity.IsActive = charityModel.IsActive; charitableEntity.UserId = charityModel.UserId; if (pending_data) { var approval = new Approval() { Id = Guid.NewGuid(), CharitableEntityId = charityModel.Id, Date = DateTime.UtcNow.ToBrazilianTimeZone(), Message = "Análise Pendente", Detail = string.Empty, Status = (int)ApproverStatus.PENDING }; await ApprovalRepository.AddAsync(approval); charitableEntity.ApproverData = DateTime.UtcNow.ToBrazilianTimeZone(); charitableEntity.Approver = string.Empty; charitableEntity.Status = ApproverStatus.PENDING; charitableEntity.IsActive = false; } else { charitableEntity.Name = charityModel.Name; charitableEntity.Cnpj = charityModel.Cnpj; } this.Repository.Udate(charitableEntity); await this.Repository.SaveAsync(); }
public async Task UpdateCharityPending(Guid id, CharityApproveDto charityApproveDto) { var charityModel = Repository.GetWhereAsQueryable(c => c.Id.Equals(id)).First(); var status = (ApproverStatus)Enum.Parse(typeof(ApproverStatus), charityApproveDto.Status); var approval = new Approval() { Id = Guid.NewGuid(), CharitableEntityId = charityModel.Id, Date = DateTime.UtcNow.ToBrazilianTimeZone(), Message = charityApproveDto.Message, Detail = charityApproveDto.Detail, Status = (int)status }; await ApprovalRepository.AddAsync(approval); charityModel.ApproverData = DateTime.UtcNow.ToBrazilianTimeZone(); charityModel.Approver = charityApproveDto.ApproverName; charityModel.Status = status; switch (status) { case ApproverStatus.PENDING_DATA: case ApproverStatus.APPROVED: case ApproverStatus.REPROVED: var lstUsers = await this.UserRepository.GetWhereAsync(u => u.Id == charityModel.UserId); var user = lstUsers.FirstOrDefault(); string title = string.Empty; if (status == ApproverStatus.APPROVED) { charityModel.IsActive = true; title = "Doa Sonhos - Cadastro Aprovado"; if (user != null) { user.IsActive = true; this.UserRepository.Udate(user); } } else if (status == ApproverStatus.REPROVED) { charityModel.IsActive = false; title = "Doa Sonhos - Cadastro Reprovado"; if (user != null) { user.IsActive = false; this.UserRepository.Udate(user); } } else if (status == ApproverStatus.PENDING_DATA) { charityModel.IsActive = false; title = "Doa Sonhos - Correção Solicitada"; if (user != null) { user.IsActive = true; this.UserRepository.Udate(user); } } await this.SendEmail(user.Login, charityModel.Name, title, string.Format("Message: {0}\r\nDetalhes: {1}", approval.Message, string.IsNullOrWhiteSpace(approval.Detail)?"-":approval.Detail)); break; default: charityModel.IsActive = false; break; } this.Repository.Udate(charityModel); await this.Repository.SaveAsync(); }