#pragma once

#include <string>
#include <utility>

class RepairOrder
{
public:
	RepairOrder( std::wstring branchName,
	             std::wstring orderNo,
	             std::wstring orderType,
	             std::wstring notifyNo,
	             std::wstring damageArea,
	             std::wstring damageDate,
	             std::wstring generatingDate,
	             std::wstring policyNo,
	             std::wstring policyNoJqx,
	             std::wstring plateNumber,
	             std::wstring brandName,
	             std::wstring isInsuranceObject,
	             std::wstring isSuccess,
	             std::wstring recommandDealerCode,
	             std::wstring recommandDealerName,
	             std::wstring recommandDealerCodeInNotify,
	             std::wstring recommandDealerNameInNotify,
	             std::wstring recommandDealerNameInSurvey,
	             std::wstring agentName,
	             std::wstring surveyor,
	             std::wstring checkDate,
	             std::wstring repairingStartDate,
	             std::wstring repairingFinishDate,
	             std::wstring status,
	             std::wstring lostItemId,
	             std::wstring surveyorRecommandStatus )
		: branchName( std::move( branchName ) ),
		  orderNo( std::move( orderNo ) ),
		  orderType( std::move( orderType ) ),
		  notifyNo( std::move( notifyNo ) ),
		  damageArea( std::move( damageArea ) ),
		  damageDate( std::move( damageDate ) ),
		  generatingDate( std::move( generatingDate ) ),
		  policyNo( std::move( policyNo ) ),
		  policyNoJQX( std::move( policyNoJqx ) ),
		  plateNumber( std::move( plateNumber ) ),
		  brandName( std::move( brandName ) ),
		  isInsuranceObject( std::move( isInsuranceObject ) ),
		  isSuccess( std::move( isSuccess ) ),
		  recommandDealerCode( std::move( recommandDealerCode ) ),
		  recommandDealerName( std::move( recommandDealerName ) ),
		  recommandDealerCodeInNotify( std::move( recommandDealerCodeInNotify ) ),
		  recommandDealerNameInNotify( std::move( recommandDealerNameInNotify ) ),
		  recommandDealerNameInSurvey( std::move( recommandDealerNameInSurvey ) ),
		  agentName( std::move( agentName ) ),
		  surveyor( std::move( surveyor ) ),
		  checkDate( std::move( checkDate ) ),
		  repairingStartDate( std::move( repairingStartDate ) ),
		  repairingFinishDate( std::move( repairingFinishDate ) ),
		  status( std::move( status ) ),
		  lostItemID( std::move( lostItemId ) ),
		  surveyorRecommandStatus( std::move( surveyorRecommandStatus ) )
	{
	}


	RepairOrder( const RepairOrder & other )
		: branchName( other.branchName ),
		  orderNo( other.orderNo ),
		  orderType( other.orderType ),
		  notifyNo( other.notifyNo ),
		  damageArea( other.damageArea ),
		  damageDate( other.damageDate ),
		  generatingDate( other.generatingDate ),
		  policyNo( other.policyNo ),
		  policyNoJQX( other.policyNoJQX ),
		  plateNumber( other.plateNumber ),
		  brandName( other.brandName ),
		  isInsuranceObject( other.isInsuranceObject ),
		  isSuccess( other.isSuccess ),
		  recommandDealerCode( other.recommandDealerCode ),
		  recommandDealerName( other.recommandDealerName ),
		  recommandDealerCodeInNotify( other.recommandDealerCodeInNotify ),
		  recommandDealerNameInNotify( other.recommandDealerNameInNotify ),
		  recommandDealerNameInSurvey( other.recommandDealerNameInSurvey ),
		  agentName( other.agentName ),
		  surveyor( other.surveyor ),
		  checkDate( other.checkDate ),
		  repairingStartDate( other.repairingStartDate ),
		  repairingFinishDate( other.repairingFinishDate ),
		  status( other.status ),
		  lostItemID( other.lostItemID ),
		  surveyorRecommandStatus( other.surveyorRecommandStatus )
	{
	}

	RepairOrder( RepairOrder && other )
		: branchName( std::move( other.branchName ) ),
		  orderNo( std::move( other.orderNo ) ),
		  orderType( std::move( other.orderType ) ),
		  notifyNo( std::move( other.notifyNo ) ),
		  damageArea( std::move( other.damageArea ) ),
		  damageDate( std::move( other.damageDate ) ),
		  generatingDate( std::move( other.generatingDate ) ),
		  policyNo( std::move( other.policyNo ) ),
		  policyNoJQX( std::move( other.policyNoJQX ) ),
		  plateNumber( std::move( other.plateNumber ) ),
		  brandName( std::move( other.brandName ) ),
		  isInsuranceObject( std::move( other.isInsuranceObject ) ),
		  isSuccess( std::move( other.isSuccess ) ),
		  recommandDealerCode( std::move( other.recommandDealerCode ) ),
		  recommandDealerName( std::move( other.recommandDealerName ) ),
		  recommandDealerCodeInNotify( std::move( other.recommandDealerCodeInNotify ) ),
		  recommandDealerNameInNotify( std::move( other.recommandDealerNameInNotify ) ),
		  recommandDealerNameInSurvey( std::move( other.recommandDealerNameInSurvey ) ),
		  agentName( std::move( other.agentName ) ),
		  surveyor( std::move( other.surveyor ) ),
		  checkDate( std::move( other.checkDate ) ),
		  repairingStartDate( std::move( other.repairingStartDate ) ),
		  repairingFinishDate( std::move( other.repairingFinishDate ) ),
		  status( std::move( other.status ) ),
		  lostItemID( std::move( other.lostItemID ) ),
		  surveyorRecommandStatus( std::move( other.surveyorRecommandStatus ) )
	{
	}

	RepairOrder & operator=( const RepairOrder & other )
	{
		if ( this == &other )
			return *this;
		branchName                  = other.branchName;
		orderNo                     = other.orderNo;
		orderType                   = other.orderType;
		notifyNo                    = other.notifyNo;
		damageArea                  = other.damageArea;
		damageDate                  = other.damageDate;
		generatingDate              = other.generatingDate;
		policyNo                    = other.policyNo;
		policyNoJQX                 = other.policyNoJQX;
		plateNumber                 = other.plateNumber;
		brandName                   = other.brandName;
		isInsuranceObject           = other.isInsuranceObject;
		isSuccess                   = other.isSuccess;
		recommandDealerCode         = other.recommandDealerCode;
		recommandDealerName         = other.recommandDealerName;
		recommandDealerCodeInNotify = other.recommandDealerCodeInNotify;
		recommandDealerNameInNotify = other.recommandDealerNameInNotify;
		recommandDealerNameInSurvey = other.recommandDealerNameInSurvey;
		agentName                   = other.agentName;
		surveyor                    = other.surveyor;
		checkDate                   = other.checkDate;
		repairingStartDate          = other.repairingStartDate;
		repairingFinishDate         = other.repairingFinishDate;
		status                      = other.status;
		lostItemID                  = other.lostItemID;
		surveyorRecommandStatus     = other.surveyorRecommandStatus;
		return *this;
	}

	RepairOrder & operator=( RepairOrder && other )
	{
		if ( this == &other )
			return *this;
		branchName                  = std::move( other.branchName );
		orderNo                     = std::move( other.orderNo );
		orderType                   = std::move( other.orderType );
		notifyNo                    = std::move( other.notifyNo );
		damageArea                  = std::move( other.damageArea );
		damageDate                  = std::move( other.damageDate );
		generatingDate              = std::move( other.generatingDate );
		policyNo                    = std::move( other.policyNo );
		policyNoJQX                 = std::move( other.policyNoJQX );
		plateNumber                 = std::move( other.plateNumber );
		brandName                   = std::move( other.brandName );
		isInsuranceObject           = std::move( other.isInsuranceObject );
		isSuccess                   = std::move( other.isSuccess );
		recommandDealerCode         = std::move( other.recommandDealerCode );
		recommandDealerName         = std::move( other.recommandDealerName );
		recommandDealerCodeInNotify = std::move( other.recommandDealerCodeInNotify );
		recommandDealerNameInNotify = std::move( other.recommandDealerNameInNotify );
		recommandDealerNameInSurvey = std::move( other.recommandDealerNameInSurvey );
		agentName                   = std::move( other.agentName );
		surveyor                    = std::move( other.surveyor );
		checkDate                   = std::move( other.checkDate );
		repairingStartDate          = std::move( other.repairingStartDate );
		repairingFinishDate         = std::move( other.repairingFinishDate );
		status                      = std::move( other.status );
		lostItemID                  = std::move( other.lostItemID );
		surveyorRecommandStatus     = std::move( other.surveyorRecommandStatus );
		return *this;
	}


	friend bool operator==( const RepairOrder & lhs, const RepairOrder & rhs )
	{
		return lhs.branchName == rhs.branchName
		       && lhs.orderNo == rhs.orderNo
		       && lhs.orderType == rhs.orderType
		       && lhs.notifyNo == rhs.notifyNo
		       && lhs.damageArea == rhs.damageArea
		       && lhs.damageDate == rhs.damageDate
		       && lhs.generatingDate == rhs.generatingDate
		       && lhs.policyNo == rhs.policyNo
		       && lhs.policyNoJQX == rhs.policyNoJQX
		       && lhs.plateNumber == rhs.plateNumber
		       && lhs.brandName == rhs.brandName
		       && lhs.isInsuranceObject == rhs.isInsuranceObject
		       && lhs.isSuccess == rhs.isSuccess
		       && lhs.recommandDealerCode == rhs.recommandDealerCode
		       && lhs.recommandDealerName == rhs.recommandDealerName
		       && lhs.recommandDealerCodeInNotify == rhs.recommandDealerCodeInNotify
		       && lhs.recommandDealerNameInNotify == rhs.recommandDealerNameInNotify
		       && lhs.recommandDealerNameInSurvey == rhs.recommandDealerNameInSurvey
		       && lhs.agentName == rhs.agentName
		       && lhs.surveyor == rhs.surveyor
		       && lhs.checkDate == rhs.checkDate
		       && lhs.repairingStartDate == rhs.repairingStartDate
		       && lhs.repairingFinishDate == rhs.repairingFinishDate
		       && lhs.status == rhs.status
		       && lhs.lostItemID == rhs.lostItemID
		       && lhs.surveyorRecommandStatus == rhs.surveyorRecommandStatus;
	}

	friend bool operator!=( const RepairOrder & lhs, const RepairOrder & rhs )
	{
		return !(lhs == rhs);
	}

	std::wstring getBranchName() const
	{
		return branchName;
	}

	void setBranchName( const std::wstring & branchName )
	{
		this->branchName = branchName;
	}

	std::wstring getOrderNo() const
	{
		return orderNo;
	}

	void setOrderNo( const std::wstring & orderNo )
	{
		this->orderNo = orderNo;
	}

	std::wstring getOrderType() const
	{
		return orderType;
	}

	void setOrderType( const std::wstring & orderType )
	{
		this->orderType = orderType;
	}

	std::wstring getNotifyNo() const
	{
		return notifyNo;
	}

	void setNotifyNo( const std::wstring & notifyNo )
	{
		this->notifyNo = notifyNo;
	}

	std::wstring getDamageArea() const
	{
		return damageArea;
	}

	void setDamageArea( const std::wstring & damageArea )
	{
		this->damageArea = damageArea;
	}

	std::wstring getDamageDate() const
	{
		return damageDate;
	}

	void setDamageDate( const std::wstring & damageDate )
	{
		this->damageDate = damageDate;
	}

	std::wstring getGeneratingDate() const
	{
		return generatingDate;
	}

	void setGeneratingDate( const std::wstring & generatingDate )
	{
		this->generatingDate = generatingDate;
	}

	std::wstring getPolicyNo() const
	{
		return policyNo;
	}

	void setPolicyNo( const std::wstring & policyNo )
	{
		this->policyNo = policyNo;
	}

	std::wstring getPolicyNoJqx() const
	{
		return policyNoJQX;
	}

	void setPolicyNoJqx( const std::wstring & policyNoJqx )
	{
		policyNoJQX = policyNoJqx;
	}

	std::wstring getPlateNumber() const
	{
		return plateNumber;
	}

	void setPlateNumber( const std::wstring & plateNumber )
	{
		this->plateNumber = plateNumber;
	}

	std::wstring getBrandName() const
	{
		return brandName;
	}

	void setBrandName( const std::wstring & brandName )
	{
		this->brandName = brandName;
	}

	std::wstring getIsInsuranceObject() const
	{
		return isInsuranceObject;
	}

	void setIsInsuranceObject( const std::wstring & isInsuranceObject )
	{
		this->isInsuranceObject = isInsuranceObject;
	}

	std::wstring getIsSuccess() const
	{
		return isSuccess;
	}

	void setIsSuccess( const std::wstring & isSuccess )
	{
		this->isSuccess = isSuccess;
	}

	std::wstring getRecommandDealerCode() const
	{
		return recommandDealerCode;
	}

	void setRecommandDealerCode( const std::wstring & recommandDealerCode )
	{
		this->recommandDealerCode = recommandDealerCode;
	}

	std::wstring getRecommandDealerName() const
	{
		return recommandDealerName;
	}

	void setRecommandDealerName( const std::wstring & recommandDealerName )
	{
		this->recommandDealerName = recommandDealerName;
	}

	std::wstring getRecommandDealerCodeInNotify() const
	{
		return recommandDealerCodeInNotify;
	}

	void setRecommandDealerCodeInNotify( const std::wstring & recommandDealerCodeInNotify )
	{
		this->recommandDealerCodeInNotify = recommandDealerCodeInNotify;
	}

	std::wstring getRecommandDealerNameInNotify() const
	{
		return recommandDealerNameInNotify;
	}

	void setRecommandDealerNameInNotify( const std::wstring & recommandDealerNameInNotify )
	{
		this->recommandDealerNameInNotify = recommandDealerNameInNotify;
	}

	std::wstring getRecommandDealerNameInSurvey() const
	{
		return recommandDealerNameInSurvey;
	}

	void setRecommandDealerNameInSurvey( const std::wstring & recommandDealerNameInSurvey )
	{
		this->recommandDealerNameInSurvey = recommandDealerNameInSurvey;
	}

	std::wstring getAgentName() const
	{
		return agentName;
	}

	void setAgentName( const std::wstring & agentName )
	{
		this->agentName = agentName;
	}

	std::wstring getSurveyor() const
	{
		return surveyor;
	}

	void setSurveyor( const std::wstring & surveyor )
	{
		this->surveyor = surveyor;
	}

	std::wstring getCheckDate() const
	{
		return checkDate;
	}

	void setCheckDate( const std::wstring & checkDate )
	{
		this->checkDate = checkDate;
	}

	std::wstring getRepairingStartDate() const
	{
		return repairingStartDate;
	}

	void setRepairingStartDate( const std::wstring & repairingStartDate )
	{
		this->repairingStartDate = repairingStartDate;
	}

	std::wstring getRepairingFinishDate() const
	{
		return repairingFinishDate;
	}

	void setRepairingFinishDate( const std::wstring & repairingFinishDate )
	{
		this->repairingFinishDate = repairingFinishDate;
	}

	std::wstring getStatus() const
	{
		return status;
	}

	void setStatus( const std::wstring & status )
	{
		this->status = status;
	}

	std::wstring getLostItemId() const
	{
		return lostItemID;
	}

	void setLostItemId( const std::wstring & lostItemId )
	{
		lostItemID = lostItemId;
	}

	std::wstring getSurveyorRecommandStatus() const
	{
		return surveyorRecommandStatus;
	}

	void setSurveyorRecommandStatus( const std::wstring & surveyorRecommandStatus )
	{
		this->surveyorRecommandStatus = surveyorRecommandStatus;
	}

private:
	std::wstring branchName;
	std::wstring orderNo;
	std::wstring orderType;
	std::wstring notifyNo;
	std::wstring damageArea;
	std::wstring damageDate;
	std::wstring generatingDate;
	std::wstring policyNo;
	std::wstring policyNoJQX;
	std::wstring plateNumber;
	std::wstring brandName;
	std::wstring isInsuranceObject;
	std::wstring isSuccess;
	std::wstring recommandDealerCode;
	std::wstring recommandDealerName;
	std::wstring recommandDealerCodeInNotify;
	std::wstring recommandDealerNameInNotify;
	std::wstring recommandDealerNameInSurvey;
	std::wstring agentName;
	std::wstring surveyor; //查勘员
	std::wstring checkDate;
	std::wstring repairingStartDate;
	std::wstring repairingFinishDate;
	std::wstring status;
	std::wstring lostItemID;
	std::wstring surveyorRecommandStatus;
};
