public SOWTrackCreateHandler(GlobalSolusindoDb db, tblM_User user, SOWTrackValidator sowTrackValidator, SOWTrackFactory sowTrackFactory, SOWTrackQuery sowTrackQuery, AccessControl accessControl) : base(db, user) { this.sowTrackValidator = sowTrackValidator; this.sowTrackFactory = sowTrackFactory; this.sowTrackQuery = sowTrackQuery; this.sowTrackEntryDataProvider = new SOWTrackEntryDataProvider(db, user, accessControl, sowTrackQuery); }
private void AddSOWTrackResultIfUserRoleIsDriver(MobileCheckInDTO checkInDTO, DateTime dateStamp) { var possibleDriverRoleNames = new List <string>() { "Driver", "DT", "Drive Tester (DT)" }; var jabatans = Db.tblM_KategoriJabatan.Where(x => x.Title.Contains("DT") || x.Title.Contains("Drive") || x.KategoriJabatan_PK == 2); var sowAssign = new SOWAssignQuery(Db).GetByPrimaryKey(checkInDTO.SOWAssign_FK); if (sowAssign == null) { throw new NullReferenceException($"Failed to create sow track result while checkin, taskid or assignId '{checkInDTO.SOWAssign_FK}' doesn't exist."); } var user = Db.tblM_User.Find(sowAssign.User_FK); if (user == null) { throw new NullReferenceException($"Failed to create sow track result while checkin, user id '{sowAssign.User_FK}' doesn't exist."); } var roleGroups = new RoleGroupQuery(Db).GetByUserFk(sowAssign.User_FK); var userIsDriver = roleGroups.Where(x => possibleDriverRoleNames.Contains(x.Title)).Count() > 0 || jabatans.Where(x => x.KategoriJabatan_PK == user.KategoriJabatan_FK).Count() > 0; if (userIsDriver) { if (string.IsNullOrEmpty(checkInDTO.TaskNetwork)) { throw new Kairos.KairosException($"Task network is required for driver checkin."); } if (sowAssign != null) { var sowTrack = new SOWTrackQuery(Db).GetBySOWFKAndTechnologyTitle(sowAssign.SOW_FK, checkInDTO.TaskNetwork); if (sowTrack != null) { SOWTrackResultDTO sowTrackResultDTO = new SOWTrackResultDTO() { CheckIn_FK = checkInDTO.CheckIn_PK, SOWTrack_FK = sowTrack.SOWTrack_PK, Status_FK = 1, }; SOWTrackResultFactory sowTrackResultFactory = new SOWTrackResultFactory(Db, User); tblT_SOWTrackResult sowTrackResult = sowTrackResultFactory.CreateFromDTO(sowTrackResultDTO, dateStamp); Db.tblT_SOWTrackResult.Add(sowTrackResult); } else { throw new Kairos.KairosException($"Invalid task network '{checkInDTO.TaskNetwork}', it's not registered in sow register."); } } } }
public SOWTrackEntryDataProvider(GlobalSolusindoDb db, tblM_User user, AccessControl accessControl, SOWTrackQuery sowTrackQuery) : base(db, user) { this.accessControl = accessControl; this.sowTrackQuery = sowTrackQuery; }