/* 
  * this file contains all alter scripts for database (with db name, entity name, changes by, changes for)
*/
USE academia_serosoft_database;

-- 
-- TABLE: program_group 
-- Change By : Deepak Motlani
-- Entity Name : Program Group
-- Reason : A program can belong to only 1 program group and a program group can several programs referring it.Hence removing 
--			the programId from program group table
--
-- ===================done ===================
ALTER TABLE program_group DROP FOREIGN KEY Refprograms467;
ALTER TABLE program_group DROP COLUMN programId;



-- 
-- TABLE: programs 
-- Change By : Deepak Motlani
-- Entity Name : Program
-- Reason : As per the logic document the constraints were missing.
--

-- =================== done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `approver` `approver` BIGINT(20) NOT NULL ;

--=================== not done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `programCode` `programCode` VARCHAR(10) NOT NULL ;

-- =================== not done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `programName` `programName` VARCHAR(35) NOT NULL ;

-- =================== not done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `programShortName` `programShortName` VARCHAR(35) NOT NULL UNIQUE ;

-- =================== not done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `programNameToBePrint` `programNameToBePrint` VARCHAR(35) NOT NULL ;

-- =================== done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `locationId` `locationId` BIGINT(20) NOT NULL ;

-- =================== done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `academyId` `academyId` BIGINT(20) NOT NULL ;

-- =================== done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `status` `status` CHAR(1) NOT NULL ;

-- =================== done ===================
ALTER TABLE `academia_serosoft_database`.`programs` 
CHANGE COLUMN `programMarkGrade` `programMarkGrade` VARCHAR(1) NOT NULL ;


-- 
-- TABLE: standard_master, standard_master_items
-- Change By : Deepak Motlani
-- Entity Name : 
-- Reason : Adding program group to standard masters table.
--

-- =================== done ===================
INSERT INTO standard_master values(10, null, 'program_group', 'PROGRAM_GROUP', 0, 0, null, 1, '2014-05-08 17:24:45');

INSERT INTO standard_master_items values(40, 'groupName', 'Group Name', 10, 'varchar', 1, 0, null, null, null, 0, 0, 1, '2014-05-08 17:24:45');


-- =================================================================================================
-- File : V6__IDGeneratorAndUserAlteration.sql
-- TABLE: user_privilege_overrides , id_definition, id_entity_setting, id_format_dynamic
-- Change By : Rupesh Agrawal
-- Entity Name : IdEntitySetting, UserPrivilegeOverride
-- Reason : drop unused  fk references
-- =================================================================================================

-- 
-- TABLE: campaign, camp_coverage_user
-- Change By : Seshagiri.K
-- Entity Name : Campaign
-- Reason : Drop the table camp_coverage_user is not required. In campaign table campaignName size is not enough, not null and unique.
-- 			In campaign table deleteFlag changed into whetherDeleted  
--
-- =================== done ===================
DROP TABLE camp_coverage_user;

-- =================== not done (unique)===================
ALTER TABLE campaign MODIFY campaignName VARCHAR(30) NOT NULL UNIQUE;

-- =================== done ===================
ALTER TABLE campaign CHANGE deleteFlag whetherDeleted BIT(1);

-- =================================================================================================
-- File : V7__ResourceBookingAndCalendarAlter.sql
-- TABLE: `resource_bookings``res_temp_unavail_slots``calendar_breaks`,calendar_weekdays
-- Change By : Makarand Sarmalkar
-- Entity Name : ResourceBooking, ResourceTemporaryUnavailableSlot, CalendarBreak, CalendarWeekday
-- Reason : Altered Tables to change the Time field datatype to DATETIME.
-- =================================================================================================

-- =================================================================================================
-- File : V8__CriteriaBuilderAlteration.sql
-- TABLE: `basic_search_config``saved_search_criteria``search_config`,id_entity_setting
-- Change By : Ashok Wagh
-- Entity Name : BasicSearchConfig, BasicSearchConfigParams, IdEntitySetting
-- Reason : drop searchConfig Name from basic_search_config ,search_config,id_entity_setting & added configCode. 
--			Added savedSearchId in  saved_search_criteria
--			Altered all CB table for Auto Increment  ID
-- =================================================================================================



-- =================================================================================================
-- File : V12__ResourcesAlterAndCreateScript.sql
-- TABLE: `resources`,`reasons`
-- Change By : Makarand Sarmalkar
-- Entity Name : Resource, Reason
-- Reason : 1) resources : Altered column "status" length to 20
			2) reasons : Created new table
-- =================================================================================================



-- 
-- TABLE: prog_batch_course_special 
-- Change By : Pushpendra Pal
-- Entity Name : ProgramBatchCourseSpecial
-- Reason : standard is â€œlastUpdatedByâ€� but this table having â€œlastUpdateByâ€� .

--

-- =================== done ===================
ALTER TABLE `academia_serosoft_database`.`prog_batch_course_special`
DROP FOREIGN KEY `Refusers1359`;
ALTER TABLE `academia_serosoft_database`.`prog_batch_course_special`
CHANGE COLUMN `lastUpdateBy` `lastUpdatedBy` BIGINT(20) NOT NULL ;
ALTER TABLE `academia_serosoft_database`.`prog_batch_course_special`
ADD CONSTRAINT `Refusers1359`
  FOREIGN KEY (`lastUpdatedBy`)
  REFERENCES `academia_serosoft_database`.`users` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;
  
-- =================== not done ===================
-- TABLE: campaign, camp_coverage_user
-- Change By : Nitin Gaikwad
-- Entity Name : batch,
-- Reason : Drop the table program_batch is not required. 

-- =================== done ===================
ALTER TABLE `course_coverage_plan` 
DROP FOREIGN KEY `Refprogram_batch512`;
ALTER TABLE `course_coverage_plan` 
ADD CONSTRAINT `Refprogram_batch512`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `program_course_group` 
DROP FOREIGN KEY `Refprogram_batch490`;
ALTER TABLE `program_course_group` 
ADD CONSTRAINT `Refprogram_batch490`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `program_batch_course_param` 
DROP FOREIGN KEY `Refprogram_batch515`;
ALTER TABLE `program_batch_course_param` 
ADD CONSTRAINT `Refprogram_batch515`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `course_relation_history` 
DROP FOREIGN KEY `Refprogram_batch1612`;
ALTER TABLE `course_relation_history` 
ADD CONSTRAINT `Refprogram_batch1612`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `prog_batch_period_config` 
DROP FOREIGN KEY `Refprogram_batch482`;
ALTER TABLE `prog_batch_period_config` 
ADD CONSTRAINT `Refprogram_batch482`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`)
  ON DELETE RESTRICT
  ON UPDATE RESTRICT;

-- =================== done ===================
ALTER TABLE `seq_academy_location` 
DROP FOREIGN KEY `Refprogram_batch1712`;
ALTER TABLE `seq_academy_location` 
ADD CONSTRAINT `Refprogram_batch1712`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`)
  ON DELETE RESTRICT
  ON UPDATE RESTRICT;

-- =================== done ===================
ALTER TABLE `program_courses` 
DROP FOREIGN KEY `Refprogram_batch491`;
ALTER TABLE `program_courses` 
ADD CONSTRAINT `Refprogram_batch491`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `prog_batch_course_special` 
DROP FOREIGN KEY `Refprogram_batch493`;
ALTER TABLE `prog_batch_course_special` 
ADD CONSTRAINT `Refprogram_batch493`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`)
  ON DELETE RESTRICT
  ON UPDATE RESTRICT;

-- =================== done ===================
ALTER TABLE `program_batch_students` 
DROP FOREIGN KEY `Refprogram_batch481`;
ALTER TABLE `program_batch_students` 
ADD CONSTRAINT `Refprogram_batch481`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `program_related_course` 
DROP FOREIGN KEY `Refprogram_batch494`;
ALTER TABLE `program_related_course` 
ADD CONSTRAINT `Refprogram_batch494`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `prog_period_break_config` 
DROP FOREIGN KEY `Refprogram_batch486`;
ALTER TABLE `prog_period_break_config` 
ADD CONSTRAINT `Refprogram_batch486`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`)
  ON DELETE RESTRICT
  ON UPDATE RESTRICT;

-- =================== done ===================
ALTER TABLE `prog_batch_seat_config` 
DROP FOREIGN KEY `Refprogram_batch484`;
ALTER TABLE `prog_batch_seat_config` 
ADD CONSTRAINT `Refprogram_batch484`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);

-- =================== done ===================
ALTER TABLE `program_batch_exam_center` 
DROP FOREIGN KEY `Refprogram_batch495`;
ALTER TABLE `program_batch_exam_center` 
ADD CONSTRAINT `Refprogram_batch495`
  FOREIGN KEY (`programBatchId`)
  REFERENCES `batches` (`id`);
  
  drop table program_batch;
  
   -- 
-- TABLE: specialization 
-- Change By : Pushpendra Pal
-- Entity Name : specialization
-- Reason : Required unique constraints for business validation.
-- Date : 21 May 2014
--
-- =================== not done ===================
ALTER TABLE academia_serosoft_database.specialization
ADD UNIQUE (specializationCode);

-- =================== done ===================
ALTER TABLE academia_serosoft_database.specialization
MODIFY specializationName  varchar (100) NOT NULL;

-- =================== done ===================
ALTER TABLE academia_serosoft_database.specialization
MODIFY specializationDescription  varchar (255) NOT NULL;

  
-- =================================================================================================
-- File : V12__ResourcesAlterAndCreateScript.sql
-- TABLE: enq_program_master 
-- Change By :  Utsav Chandvaniya
-- Entity Name : EnqProgramMaster
-- impact on entity : EnquiryProgramDetail, Program
-- Reason : for enquiry exam details tab, enquiry_program_master table is missing
-- =================================================================================================



CREATE TABLE `enq_program_master` (
  `id` BIGINT(20) NOT NULL,
  `programName` VARCHAR(45) NOT NULL,
  `programCode` VARCHAR(45) NULL,
  `lastUpdate` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `lastUpdatedBy` BIGINT(20) NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_enq_program_master_lastupdatedbu_idx` (`lastUpdatedBy` ASC),
  CONSTRAINT `fk_enq_program_master_lastupdatedbu`
    FOREIGN KEY (`lastUpdatedBy`)
    REFERENCES `academia_serosoft_database_new`.`users` (`id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT);


ALTER TABLE `enq_exams_details` 
DROP FOREIGN KEY `Refprograms1628`;
ALTER TABLE `enq_exams_details` 
ADD CONSTRAINT `Refprograms1628`
  FOREIGN KEY (`qualifyingProgramId`)
  REFERENCES `enq_program_master` (`id`)
  ON DELETE RESTRICT
  ON UPDATE RESTRICT;
    
-- =================================================================================================
-- File : V6__enquiryAddedCol.sql
-- TABLE: enquiry 
-- Change By :  Utsav Chandvaniya
-- Entity Name : Enquiry
-- impact on entity : no impact on others
-- Reason : this is derive function, can not be done using CB 
-- =================================================================================================
ALTER TABLE `enquiry`
ADD COLUMN `timeTakenForCompletion` INT NULL AFTER `lastUpdate`;
    

-- =================================================================================================
-- File : V16__EnquiryTypeEditColumnStandardMaster.sql
-- TABLE: standard_master_items
-- Change By :  Utsav Chandvaniya
-- impact on entity : no impact on others
-- Reason : in standard_master_items table enquiry type is boolean but it should be varchar
-- =================================================================================================    

UPDATE `standard_master_items` SET `fieldType`='varchar' WHERE `id`='8';    