
---------------------------------------------------
-- 업무분야관리
---------------------------------------------------
--CREATE TABLE SuteField
CREATE TABLE CmBusinessField
(
	SiteId				int  NOT NULL ,					-- 현장 고유번호
	BusinessFieldId     int  identity(1,1) NOT NULL ,	-- 빌딩 고유번호
--	CompanyId           int  NOT NULL ,					-- 회사 고유번호 (업무분야를 독립적으로 변경: 2015-01-23)
	Name				nvarchar(50)  NOT NULL ,		-- 파일명

	IsUse				bit  NULL ,						-- 사용 유무
	 
	PRIMARY KEY (SiteId ASC , BusinessFieldId ASC)
);
DBCC CHECKIDENT( CmBusinessField, RESEED, 1 )

-- 반드시 넣어야 한다. 1은 '공통' 설정되어야 하며, 수정될 수도 없고 삭제될 수도 없다.
SET IDENTITY_INSERT CmBusinessField ON
INSERT INTO CmBusinessField (SiteId, BusinessFieldId, Name, IsUse) VALUES (1, 1, '공통', 1);
SET IDENTITY_INSERT CmBusinessField OFF

---------------------------------------------------
-- 사용자관리
---------------------------------------------------

CREATE TABLE CmPosition
(
	SiteId				int	NOT NULL ,					-- 현장 고유번호
	PositionId			int	identity(1,1) NOT NULL ,	-- 직급 고유번호

	Name				nvarchar(40)  NOT NULL ,		-- 직급 이름

	IsUse				bit  NULL ,						-- 사용 유무
	
	PRIMARY KEY (SiteId ASC , PositionId ASC)
);
DBCC CHECKIDENT( CmPosition, RESEED, 1 )

--CREATE TABLE InusUser
CREATE TABLE CmUser
(
	SiteId				int  NOT NULL ,					-- 현장 고유번호
	UserId              nvarchar(24)  NOT NULL ,		-- 사용자 고유번호
	CompanyId           int NULL ,						-- 사용자 회사 고유번호
	DepartmentId        int NULL ,						-- 사용자 부서 고유번호
	PositionId          int NULL ,						-- 사용자 직급 고유번호
	BusinessFieldId     int NULL ,						-- 사용자 근무분야 고유번호
	UserGroupId			int NULL ,						-- 사용자 그룹 고유번호

	Name				nvarchar(30)  NOT NULL ,		-- 사용자 이름
	Passwd				nvarchar(30)  NOT NULL ,		-- 사용자 비밀번호
	Birthday			datetime  NULL ,				-- 사용자 생일
	Lunar				bit  NULL ,						-- 사용자 음력 생일
	StateId             int  NULL ,						-- 사용자 상태 고유번호
	EmploymentType      int  NULL , /*0: 정규직 , 1: 비정규직 */		-- 사용자 고용 고유번호
	EmploymentStatus    int  NULL , /*0: 재직 , 1: 휴직 , 2: 퇴직*/		-- 사용자 상태 고유번호
	OfficePhoneNo       nvarchar(20)  NULL ,			-- 사용자 사무실 전화번호
	HomePhoneNo         nvarchar(20)  NULL ,			-- 사용자 집 전화번호
	MobilePhoneNo       nvarchar(20)  NULL ,			-- 사용자 모바일 전화번호
	HomeZip1            CHAR(3)  NULL ,					-- 사용자 우편번호 1
	HomeZip2            CHAR(3)  NULL ,					-- 사용자 우편번호 2
	HomeAddress1        nvarchar(50)  NULL ,			-- 사용자 주소 1
	HomeAdderss2        nvarchar(100) NULL ,			-- 사용자 주소 2
	Email				nvarchar(50)  NULL ,			-- 사용자 이메일
	EnterDate			datetime  NULL ,				-- 사용자 입사일
	RetireDate			datetime  NULL ,				-- 사용자 퇴사일
	Comment				nvarchar(1024)  NULL ,			-- 사용자 상세정보
	Rfcsn				nvarchar(30)  NULL ,			-- 사원증 고유번호
	PasswordUpdatedDate datetime  NULL ,				-- 사용자 비밀번호 변경날짜
	PhotoFileId			int NULL ,						-- 사용자 사진 파일이름		

	IsBems				bit NULL ,						-- BEMS 모드 유무(true: BEMS, false: FMS)
	IsUse				bit NULL ,						-- 사용 유무
	
	PRIMARY KEY (SiteId ASC , UserId ASC)
);

INSERT INTO CmUser (SiteId, BusinessFieldId, UserId, Name, Passwd) VALUES (1, 1, 'admin', 'Administrator', 'admin');


-- 자격증
CREATE TABLE FmsLicense
(
	SiteId					int				NOT NULL,		-- 현장 고유번호
	LicenseId				int	identity(1,1) NOT NULL,		-- 자격증 고유번호
	Name					nvarchar(52)	NOT NULL,		-- 자격증 이름
	IssuingOffice			nvarchar(52)	NOT NULL,		-- 발행사 
	BusinessFieldId			int				NULL,			-- 사업 영역 고유번호
	EducationalInstitute	nvarchar(52)	NULL,			-- 교육 기관
	Note					nvarchar(256)	NULL,			-- 메모
	IsUse					bit				NULL,			-- 사용 유무

	PRIMARY KEY (SiteId ASC , LicenseId ASC)
);
DBCC CHECKIDENT( FmsLicense, RESEED, 1 )


-- 사용자와 자격증 관계 테이블
CREATE TABLE CmUserToLicense
(
	SiteId			int		NOT NULL,				-- 현장 고유번호
	UserId			nvarchar(24)  NOT NULL ,		-- 사용자 아이디
	LicenseId		int		NOT NULL,				-- 자격증 고유번호

	PRIMARY KEY (SiteId ASC , UserId ASC , LicenseId ASC)
);


ALTER TABLE CmPosition
	ADD CONSTRAINT FK__CmUserPosition__CmSite 
		FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId)
;


ALTER TABLE CmUser
	ADD CONSTRAINT FK__CmUser__CmDepartment 
		FOREIGN KEY (SiteId , CompanyId , DepartmentId) 
		REFERENCES CmDepartment(SiteId , CompanyId , DepartmentId)
;

ALTER TABLE CmUser
	ADD CONSTRAINT FK__CmUser__CmCompany 
		FOREIGN KEY (SiteId , CompanyId) REFERENCES CmCompany(SiteId , CompanyId)
;

ALTER TABLE CmUser
	ADD CONSTRAINT FK__CmUser__CmPosition 
		FOREIGN KEY (SiteId , PositionId) 
		REFERENCES CmPosition(SiteId , PositionId)
;

--ALTER TABLE CmUser
--	ADD CONSTRAINT FK__CmUser__CmFile 
--		FOREIGN KEY (SiteId , FileId) REFERENCES CmFile(SiteId , FileId)
--;

ALTER TABLE CmUser
	ADD CONSTRAINT FK__CmUser__CmBusinessField 
		FOREIGN KEY (SiteId , BusinessFieldId) REFERENCES CmBusinessField(SiteId , BusinessFieldId)
;


ALTER TABLE FmsLicense
	ADD CONSTRAINT FK__FmsLicense__CmSite 
		FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId)
;

ALTER TABLE FmsLicense
	ADD CONSTRAINT FK__FmsLicense__CmBusinessField 
		FOREIGN KEY (SiteId,BusinessFieldId) REFERENCES CmBusinessField(SiteId, BusinessFieldId)
;

ALTER TABLE CmUserToLicense
	ADD CONSTRAINT FK__CmUserToLicense__CmUser 
		FOREIGN KEY (SiteId,UserId) REFERENCES CmUser(SiteId,UserId)
;

ALTER TABLE CmUserToLicense
	ADD CONSTRAINT FK__CmUserToLicense__FmsLicense 
		FOREIGN KEY (SiteId,LicenseId) REFERENCES FmsLicense(SiteId,LicenseId)
;


--ALTER TABLE CmBusinessField
--	ADD CONSTRAINT FK__CmBusinessField__CmCompany 
--		FOREIGN KEY (SiteId , CompanyId) REFERENCES CmCompany(SiteId , CompanyId)
--;


--CREATE TABLE FmsInusHire
--(
--	HireId              int  NOT NULL ,
--	HireName             nvarchar(50)  NOT NULL ,
--	SortOrderNo             int  NULL ,
--	IsUse             bit  NULL ,
--	InsertedDate         datetime  NULL ,
--	InsertedUser         nvarchar(10)  NULL ,
--	UpdatedDate          datetime  NULL ,
--	UpdatedUser          nvarchar(10)  NULL ,
--	 PRIMARY KEY (HireId ASC)
--)
--;


--CREATE TABLE FmsInusLicense
--(
--	UserId               nvarchar(10)  NOT NULL ,
--	licenseId           int  NOT NULL ,
--	licenseClass         nvarchar(50)  NOT NULL ,
--	licenseNo            nvarchar(50)  NOT NULL ,
--	licenseGet           datetime  NOT NULL ,
--	licenseUpdate        datetime  NULL ,
--	SortOrderNo             int  NULL ,
--	IsUse             bit  NULL ,
--	licenseComment       nvarchar(2000)  NULL ,
--	InsertedDate         datetime  NULL ,
--	InsertedUser         nvarchar(10)  NULL ,
--	UpdatedDate          datetime  NULL ,
--	udpatedUser          nvarchar(10)  NULL ,
--	 PRIMARY KEY (UserId ASC,licenseId ASC)
--)
--;

--CREATE TABLE CmUserState
--(
--	StateId             int  NOT NULL ,
--	StateName           nvarchar(50)  NOT NULL ,
--	SortOrderNo         int  NULL ,
--	IsUse				bit  NULL ,
--	InsertedDate        datetime  NULL ,
--	InsertedUser        nvarchar(10)  NULL ,
--	UpdatedDate         datetime  NULL ,
--	UpdatedUser         nvarchar(10)  NULL ,
--	 PRIMARY KEY (StateId ASC)
--);

--CREATE TABLE SVUS_UserState
--(
--	User_ID              nvarchar(10)  NOT NULL ,
--	PLACE_State          numeric(2,0)  NULL ,
--	 PRIMARY KEY (User_ID ASC)
--)
--;

--ALTER TABLE InusLicense
--	ADD  FOREIGN KEY (userId) REFERENCES InusUser(userId)
--;

--ALTER TABLE CmUserPhoto
--	ADD  FOREIGN KEY (UserId) REFERENCES CmUser(UserId)
--;

--ALTER TABLE InusUser
--	ADD  FOREIGN KEY (hireId) REFERENCES InusHire(hireId)
--;

--ALTER TABLE InusUser
--	ADD  FOREIGN KEY (stateId) REFERENCES InusState(stateId)
--;


--CREATE TABLE FmsInusChange
--(
--	ChangeDay            numeric(3,0)  NOT NULL
--)
--;
