Skip to content

Commit

Permalink
create projects folder from dio.me
Browse files Browse the repository at this point in the history
Create challenges + 1 from fullstack typescript
  • Loading branch information
carlos09v committed Nov 27, 2023
1 parent 1dd98af commit a3e8df6
Show file tree
Hide file tree
Showing 9 changed files with 983 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
38 changes: 38 additions & 0 deletions schools/challenges/1_fullstack_typescript/desafio-1/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Desenvolvendo o Dio Bank
desenvolvido por [Nathally Souza](https://github.com/nathyts)

#### Projeto desenvolvido com conceitos básicos de typescript

### Tecnologias
- Typescript

### Como rodar o projeto

1 - Clone o repositório

2 - Instale as dependeências

npm install

3 - Execute o projeto

npm run dev

#### Desafios
[ V ] Implementar os métodos de depósito (deposit) e saque (withdraw) na classe DioAccount
- Os valores dos saldos devem ser alterados, de acordo com o valor informado para depósito
- Apenas contas com o status true e saldo (balance) maior que o valor solicitado podem fazer saques

[ V ] Implementar o método de empréstimo (getLoan) na classe CompanyAccount
- Os valores do saldos deve ser acrescidos, de acordo com o valor informado para empréstimo
- Apenas contas com o status true podem fazer empréstimo

[ V ] Criar um novo tipo de conta a partir da DioAccount
- Esta conta não deve receber novos atributos
- Esta conta terá um método de depósito, que acresce 10 a mais ao valor informado para depósito. (Ex: Um depósito de 100, será de 110 no final)

[ V ] Todos os atributos de qualquer conta devem ser privados

[ V ] Os atributos name e accountNumber não podem ser alterados internamente ou externamente

[ V ] Criar instancias para cada um dos tipos de conta no app.ts e executar os métodos possíveis.
14 changes: 14 additions & 0 deletions schools/challenges/1_fullstack_typescript/desafio-1/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { CompanyAccount } from './class/CompanyAccount'
import { PeopleAccount } from './class/PeopleAccount'

// =>> Criar instâncias...
const Nath: PeopleAccount = new PeopleAccount(1, 'Nath', 10)
const Dio: CompanyAccount = new CompanyAccount('DIO', 20)

const novaConta_Teste: PeopleAccount = new PeopleAccount(2,'Teste', 2)
novaConta_Teste.deposit(12)
novaConta_Teste.getBalance()

Dio.getLoan()
Dio.getBalance()
Dio.getName()
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { DioAccount } from "./DioAccount"

export class CompanyAccount extends DioAccount {

constructor(name: string, accountNumber: number){
super(name, accountNumber)
}

getLoan = (): void => {
if(this.validateStatus()) {
console.log(`Sua conta está ativa e é possivel realizar o empréstimo!`)
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
export abstract class DioAccount {
private readonly name: string
private readonly accountNumber: number
private balance: number = 0
private status: boolean = true

constructor(name: string, accountNumber: number){
this.name = name
this.accountNumber = accountNumber
}

getName = (): string => {
return this.name
}

deposit = (money: number): void => {
// Conta VIP
if (this.accountNumber == 2) {
console.log('Você está em uma conta especial :)')
console.log('Cada depósito receberá 10 reais a mais!')
const juros = this.balance += money + 10
return console.log(`Foi depositado R$10 + R$${money} = R$${juros}.`)
}

// Conta comum
if(this.validateStatus()){
this.balance += money
console.log(`Voce depositou R$${money} com sucesso.`)
}

}

withdraw = (money: number): void => {
if(this.validateStatus()) {
if (this.balance >= money) {
this.balance -= money
return console.log(`Saque de R$${money} efetuado com sucesso!`)
}

console.log('Saque Inválido! Você não possui fundos suficientes :(')
}

}

getBalance = (): void => {
console.log(this.balance)
}

readonly validateStatus = (): boolean => {
if (this.status) {
return this.status
}

throw new Error('Error: Sua conta não é válida!')
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { DioAccount } from "./DioAccount"

export class PeopleAccount extends DioAccount {
doc_id: number

constructor(doc_id: number, name: string, accountNumber: number){
super(name, accountNumber)
this.doc_id = doc_id
}
}
Loading

0 comments on commit a3e8df6

Please sign in to comment.