Skip to content

Commit

Permalink
file upload system completed
Browse files Browse the repository at this point in the history
  • Loading branch information
BIJOY-SUST committed Nov 16, 2019
1 parent 937bfab commit dfbe492
Show file tree
Hide file tree
Showing 19 changed files with 726 additions and 284 deletions.
169 changes: 167 additions & 2 deletions chaincode/fabcar/go/fabcar.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,30 @@ type User struct {
LatestHashFile string `json:"latestHashFile"`
}

type RAPC struct {
TableName string `json:"tableName"`
Key string `json:"key"`
UserKey string `json:"userKey"`
Name string `json:"name"`
Email string `json:"email"`
PostCnt int `json:"postCnt"`
LoveCnt int `json:"loveCnt"`
}

type IP struct {
TableName string `json:"tableName"`
Key string `json:"key"`
UserKey string `json:"userKey"`
Name string `json:"name"`
Email string `json:"email"`
FileName string `json:"fileName"`
NewFilePath string `json:"newFilePath"`
LatestHashFile string `json:"latestHashFile"`
DateTime string `json:"dateTime"`
IsImageOrPdf string `json:"isImage"`
}


/*
* The Init method is called when the Smart Contract "fabcar" is instantiated by the blockchain network
* Best practice is to have any Ledger initialization in separate function -- see initLedger()
Expand Down Expand Up @@ -95,8 +119,15 @@ func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response
return s.loginUser(APIstub, args)
} else if function == "profileInformation" {
return s.profileInformation(APIstub, args)
} else if function == "ReactAndPostUser" {
return s.ReactAndPostUser(APIstub, args)
} else if function == "findUserForRAPC" {
return s.findUserForRAPC(APIstub, args)
} else if function == "ValueReactAndPostUser" {
return s.ValueReactAndPostUser(APIstub, args)
} else if function == "sendIP" {
return s.sendIP(APIstub, args)
}

return shim.Error("Invalid Smart Contract function name.")
}

Expand Down Expand Up @@ -211,10 +242,12 @@ func (s *SmartContract) changeCarOwner(APIstub shim.ChaincodeStubInterface, args
return shim.Success(nil)
}

// Intellectual Property Project Start

func (s *SmartContract) createUser(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

if len(args) != 8 {
return shim.Error("Incorrect number of arguments. Expecting 7")
return shim.Error("Incorrect number of arguments. Expecting 8")
}
var docType string = "User"
var key string = args[0]
Expand Down Expand Up @@ -298,6 +331,138 @@ func (s *SmartContract) profileInformation(APIstub shim.ChaincodeStubInterface,
return shim.Success(carAsBytes)
}

func (s *SmartContract) findUserForRAPC(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

if len(args) != 2 {
return shim.Error("Incorrect number of arguments. Expecting 2")
}

var useremail string = args[0]
var key string = args[1]


var queryString = fmt.Sprintf("{\"selector\":{\"tableName\":\"RAPC\",\"email\":\"%s\",\"userKey\":\"%s\"}}", useremail, key)

resultsIterator, _ := APIstub.GetQueryResult(queryString) //skip the errors
//skipping error handling here :p

defer resultsIterator.Close()

// buffer is a JSON array containing QueryResults
var buffer bytes.Buffer
buffer.WriteString("[")

var bArrayMemberAlreadyWritten = false
for resultsIterator.HasNext() {
queryResponse, err := resultsIterator.Next()
if err != nil {
return shim.Error(err.Error())
}
// Add a comma before array members, suppress it for the first array member
if bArrayMemberAlreadyWritten == true {
buffer.WriteString(",")
}
buffer.WriteString("{\"Key\":")
buffer.WriteString("\"")
buffer.WriteString(queryResponse.Key)
buffer.WriteString("\"")

buffer.WriteString(", \"Record\":")
// Record is a JSON object, so we write as-is
buffer.WriteString(string(queryResponse.Value))
buffer.WriteString("}")
bArrayMemberAlreadyWritten = true
}
buffer.WriteString("]")

fmt.Printf("- queryAllCars:\n%s\n", buffer.String())

return shim.Success(buffer.Bytes())
}

func (s *SmartContract) ReactAndPostUser(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

if len(args) != 4 {
return shim.Error("Incorrect number of arguments. Expecting 4")
}
var docType string = "RAPC"
var key string = args[0]
var userKey string = args[1]
var name string = args[2]
var email string = args[3]
var postCnt int = 0
var loveCnt int = 0

//fmt.Println("User Name : ",name)

var rapc = RAPC{TableName : docType,Key : key,UserKey : userKey,Name : name,Email : email,PostCnt : postCnt,LoveCnt : loveCnt}

// var car = Car{Make: args[1], Model: args[2], Colour: args[3], Owner: args[4]}


rapcAsBytes, _ := json.Marshal(rapc)
APIstub.PutState(key, rapcAsBytes)

return shim.Success(nil)
}

func (s *SmartContract) ValueReactAndPostUser(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

if len(args) != 2 {
return shim.Error("Incorrect number of arguments. Expecting 2")
}

var flag string = args[1]
var post string = "post"
var love string = "love"

rapcAsBytes, _ := APIstub.GetState(args[0])
// car := Car{}
rapc := RAPC{}

json.Unmarshal(rapcAsBytes, &rapc)
if flag == post {
rapc.PostCnt = rapc.PostCnt + 1
} else if flag == love {
rapc.LoveCnt = rapc.LoveCnt + 1
}


rapcAsBytes, _ = json.Marshal(rapc)
APIstub.PutState(args[0], rapcAsBytes)

return shim.Success(nil)
}

func (s *SmartContract) sendIP(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

if len(args) != 9 {
return shim.Error("Incorrect number of arguments. Expecting 8")
}
var docType string = "IP"
var key string = args[0]
var name string = args[1]
var email string = args[2]
var userkey string = args[3]
var filename string = args[4]
var filepath string = args[5]
var filehash string = args[6]
var datetime string = args[7]
var isImageOrPdf string = args[8]

//fmt.Println("User Name : ",name)

var ip = IP{TableName : docType,Key : key,UserKey : userkey,Name : name,Email : email,FileName : filename, NewFilePath : filepath , LatestHashFile : filehash, DateTime : datetime, IsImageOrPdf : isImageOrPdf }

// var car = Car{Make: args[1], Model: args[2], Colour: args[3], Owner: args[4]}


ipAsBytes, _ := json.Marshal(ip)
APIstub.PutState(key, ipAsBytes)

return shim.Success(nil)
}

// The main function is only relevant in unit test mode. Only included here for completeness.
func main() {

Expand Down
Loading

0 comments on commit dfbe492

Please sign in to comment.