Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 19 additions & 74 deletions mms-frontend/src/pages/AppInstall.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { Component } from 'react'
import { Grid,Paper,Typography,Button, TextField } from '@material-ui/core'
import validator from 'validator';
import axios from 'axios';

export class AppInstall extends Component {
constructor(props) {
Expand All @@ -12,16 +13,11 @@ export class AppInstall extends Component {
email:"",
phone:"",
description:"",
password:"",
confirmPassword:"",
valid:false,
error:{
emailError:false,
eamilErrorDesc:"Email*",
passwordError:false,
passwordErrorDesc:"",
confirmPasswordError:false,
confirmPasswordErrorDesc:""

}

};
Expand Down Expand Up @@ -53,41 +49,7 @@ export class AppInstall extends Component {
}

}
else if(e.target.name === "password")
{

if(validator.isLength(e.target.value, 8, 15) && validator.isStrongPassword(e.target.value))
{
errors["passwordErrorDesc"]="";
errors["passwordError"]=false;
this.setState({error:errors})

}
else
{
errors["passwordErrorDesc"]="Password should be the combination of atleast 1 lowercase letter, 1 uppercase letter, 1 number and 1 symbol and has length of atleast 8-15 characters.";
errors["passwordError"] = true;
this.setState({error:errors})

}
}
else if(e.target.name === "confirmPassword")
{
if(validator.equals(e.target.value, this.state.password))
{
errors["confirmPasswordErrorDesc"]="";
errors["confirmPasswordError"]=false;
this.setState({error:errors})

}
else
{
errors["confirmPasswordErrorDesc"]="Password didn't match";
errors["confirmPasswordError"] = true;
this.setState({error:errors})

}
}

this.setState({
valid: !(this.state.error.emailError || this.state.error.passwordError || this.state.error.confirmPasswordError || !validator.isLength(this.state.name1, 1,50) || !validator.isLength(this.state.address, 1, 200) || ! validator.isLength(this.state.description, 1, 10000))
});
Expand All @@ -100,6 +62,20 @@ export class AppInstall extends Component {
submitfunction=()=>
{
//var valid = this.handleValidation();
const orgObject = {
orgName: this.state.name1,
address: this.state.address,
email: this.state.email,
phone_no: this.state.phone,
description: this.state.description
}
axios.post('/org/', orgObject)
.then((res) => {
console.log(res);
}).catch((error) => {
console.log(error)
});
//this.setState({ username: '', email: '', password: '' })
console.log(this.state)
}

Expand Down Expand Up @@ -172,40 +148,9 @@ export class AppInstall extends Component {
/>

</div>
<div>


<TextField
label="Password*"
name="password"
//id="standard-basic"
type ="password"
error={this.state.error.passwordError}
placeholder="Enter a strong password"
onChange={e => this.change(e)}

/>

</div>

<div>
<Typography variant='caption'>{this.state.error.passwordErrorDesc}</Typography>

</div>


<div>
<TextField
label="Confirm Password*"
name="confirmPassword"
//id="standard-basic"
type ="password"
error={this.state.error.confirmPasswordError}
placeholder="Enter a strong password"
onChange={e => this.change(e)}

/>

</div>

<div>
<Typography variant='caption'>{this.state.error.confirmPasswordErrorDesc}</Typography>

Expand Down
81 changes: 81 additions & 0 deletions src/main/java/com/memeor/mms/beans/Organization.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.memeor.mms.beans;

import java.util.Date;
import java.util.Objects;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotBlank;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Entity(name = "organizations")
@Table(name = "organizations")
@RequiredArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
@ToString
public class Organization {

@Id
@SequenceGenerator(name = "mms_org_id_seq", sequenceName = "mms_org_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mms_org_id_seq")
private Integer id;

@NotBlank
@Column(name = "name", unique= true)
private String orgName;

@NotBlank
@Column(name = "address")
private String address;

@NotBlank
@Column(name = "email", unique = true)
private String email;

@NotBlank
@Column(name = "ph_number")
private String phone_no;

@NotBlank
@Column(name = "description")
private String description;

@Column(name = "created_ts", updatable = false, columnDefinition= "TIMESTAMP WITH TIME ZONE")
@JsonFormat(pattern = "yyyy-MM-dd@HH:mm:ss")
@Temporal(TemporalType.TIMESTAMP)
private Date createdTS;

@Column(name = "updated_ts", updatable = false, columnDefinition= "TIMESTAMP WITH TIME ZONE")
@JsonFormat(pattern = "yyyy-MM-dd@HH:mm:ss")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedTS;

@PrePersist
protected void onCreate() {
this.createdTS = new Date();
}

@PreUpdate
protected void onUpdate() {
this.updatedTS = new Date();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.memeor.mms.beans;

import org.springframework.stereotype.Component;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Component
public class OrganizationRegistrationResponse {
private RegistrationStatus status;
private String message;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.memeor.mms.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.memeor.mms.beans.Organization;
import com.memeor.mms.service.OrganizationService;
import com.memeor.mms.beans.OrganizationRegistrationResponse;
import com.memeor.mms.beans.RegistrationStatus;

import java.util.List;

@RestController
@RequestMapping("/org")
public class OrganizationController {

@Autowired
OrganizationService organizationService;



//get all organizations
//Note: should be able to access by super admin only in future
@GetMapping("")
public List<Organization> getAllOrganization(){

return organizationService.getAllOrganizations();


}

//Register a new organization
@PostMapping("")
public ResponseEntity<OrganizationRegistrationResponse> addOrganization(@RequestBody Organization organization){
OrganizationRegistrationResponse organizationRegistrationResponse = organizationService.saveOrganization(organization);
if(organizationRegistrationResponse.getStatus().equals(RegistrationStatus.ACCEPTED))
return new ResponseEntity<>(organizationRegistrationResponse, HttpStatus.ACCEPTED);
else
return new ResponseEntity<>(organizationRegistrationResponse, HttpStatus.CONFLICT);



}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.memeor.mms.repository;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import com.memeor.mms.beans.Organization;

@Repository
public interface OrganizationRepository extends CrudRepository<Organization, Integer>{

@Query("select count(*) = 1 from organizations where name = :orgName")
public Boolean checkIfNameAlreadyUsed(String orgName);

@Query("select count(*) =1 from organizations where email = :emailAddress")
public Boolean checkIfEmailAlreadyUsed( String emailAddress);

}
18 changes: 18 additions & 0 deletions src/main/java/com/memeor/mms/service/OrganizationService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.memeor.mms.service;

import com.memeor.mms.beans.Organization;
import com.memeor.mms.beans.OrganizationRegistrationResponse;
import java.util.List;


public interface OrganizationService {
public List<Organization> getAllOrganizations();

public OrganizationRegistrationResponse saveOrganization(Organization organization);

public boolean checkIfEmailAlreadyUsed(String emailAddress);

public boolean checkIfNameAlreadyUsed(String orgName);


}
Loading