public SOWAssignUpdateHandler(GlobalSolusindoDb db, tblM_User user, SOWAssignValidator sowAssignValidator, SOWAssignFactory sowAssignFactory, SOWAssignQuery sowAssignQuery, AccessControl accessControl) : base(db, user)
 {
     this.sowAssignValidator         = sowAssignValidator;
     this.sowAssignFactory           = sowAssignFactory;
     this.sowAssignQuery             = sowAssignQuery;
     this.sowAssignEntryDataProvider = new SOWAssignEntryDataProvider(db, user, accessControl, sowAssignQuery);
 }
Esempio n. 2
0
        public SOWDTO GetByPrimaryKey(int primaryKey)
        {
            SOWDTO record = GetQuery().FirstOrDefault(sow => sow.SOW_PK == primaryKey);

            if (record != null)
            {
                var sowAssigns = new SOWAssignQuery(this.Db).GetWithSP_BySOW_FK(record.SOW_PK);
                record.SOWAssigns = sowAssigns.OrderByDescending(sowAssign => sowAssign.SOWAssign_PK).ToList();

                record.SOWTracks = new SOWTrackQuery(Db).GetBySOWFK(primaryKey);
            }
            return(record);
        }
Esempio n. 3
0
        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 SearchResult <SOWTrackDTO> GetDataByFilter(SOWTrackSearchFilter filter)
        {
            if (string.IsNullOrEmpty(filter.SortName))
            {
                filter.SortName = "SOWTrack_PK";
            }
            SOWTrackQuery sowTrackQuery = new SOWTrackQuery(this.Db);

            var sowAssign = new SOWAssignQuery(Db).GetByPrimaryKey(filter.TaskId);
            int sowFk     = 0;

            if (sowAssign == null)
            {
                throw new Kairos.KairosException($"Invalid task ID '{filter.TaskId}'.");
            }
            if (sowAssign != null)
            {
                sowFk = sowAssign.SOW_FK;
            }

            var filteredRecords =
                sowTrackQuery.GetQuery();

            if (filter.TaskId > 0 && sowFk > 0)
            {
                filteredRecords = filteredRecords.Where(x => x.SOW_FK == sowFk);
            }

            if (!string.IsNullOrEmpty(filter.NetworkType))
            {
                var technology = new TechnologyQuery(Db).GetByTitle(filter.NetworkType);
                if (technology != null)
                {
                    filteredRecords.Where(x => x.TipePekerjaan_FK == technology.Technology_PK);
                }
                else
                {
                    filteredRecords.Where(x => x.TipePekerjaan_FK == 0);
                }
            }

            var displayedRecords = filteredRecords.
                                   SortBy(filter.SortName, filter.SortDir)
                                   .Skip(filter.Skip)
                                   .Take(filter.PageSize)
                                   .ToList();

            var routes =

                displayedRecords = displayedRecords.Select(sowTrack => new SOWTrackDTO
            {
                SOWTrack_PK = sowTrack.SOWTrack_PK,
                SOW_FK      = sowTrack.SOW_FK,
                Route       = sowTrack.Route,
                CreatedBy   = sowTrack.CreatedBy,
                CreatedDate = sowTrack.CreatedDate,
                UpdatedBy   = sowTrack.UpdatedBy,
                UpdatedDate = sowTrack.UpdatedDate,
                Status_FK   = sowTrack.Status_FK
            }).ToList();


            var searchResult = new SearchResult <SOWTrackDTO>(filter);

            searchResult.Filter               = filter;
            searchResult.Count.TotalRecords   = sowTrackQuery.GetTotalRecords();
            searchResult.Count.TotalFiltered  = filteredRecords.Count();
            searchResult.Count.TotalDisplayed = displayedRecords.Count();
            searchResult.Records              = displayedRecords;

            return(searchResult);
        }
 public SOWAssignEntryDataProvider(GlobalSolusindoDb db, tblM_User user, AccessControl accessControl, SOWAssignQuery sowAssignQuery) : base(db, user)
 {
     this.accessControl  = accessControl;
     this.sowAssignQuery = sowAssignQuery;
 }
        private SOWDTO CreateModel(int pk)
        {
            var jabatanQuery = new KategoriJabatanQuery(Db);
            var now          = DateTime.Now;

            if (pk > 0)
            {
                SOWDTO sow = sowQuery.GetByPrimaryKey(pk);
                if (sow != null)
                {
                    var unOrderedassigns = new SOWAssignQuery(Db).GetWithSP_BySOW_FK(pk);

                    var orderedAssigns = new List <SOWAssignDTO>();
                    var teamLead       = unOrderedassigns.FirstOrDefault(x => x.KategoriJabatan_FK == 1);
                    var rno            = unOrderedassigns.FirstOrDefault(x => x.KategoriJabatan_FK == 6);
                    rno.KategoriJabatanTitle = "RNO";
                    var rf     = unOrderedassigns.FirstOrDefault(x => x.KategoriJabatan_FK == 5);
                    var dt     = unOrderedassigns.FirstOrDefault(x => x.KategoriJabatan_FK == 2);
                    var rigger = unOrderedassigns.FirstOrDefault(x => x.KategoriJabatan_FK == 3);

                    orderedAssigns.Add(teamLead);
                    orderedAssigns.Add(rno);
                    orderedAssigns.Add(rf);
                    orderedAssigns.Add(dt);
                    orderedAssigns.Add(rigger);

                    sow.SOWAssigns = orderedAssigns;
                }
                return(sow);
            }
            SOWDTO sowDTO = new SOWDTO()
            {
                TglMulai = now,
                //TglSelesai = now
            };

            List <SOWAssignDTO> sowAssigns = new List <SOWAssignDTO>();

            //Team leader
            sowAssigns.Add(new SOWAssignDTO()
            {
                SOWAssign_PK         = 0,
                SOW_FK               = sowDTO.SOW_PK,
                SOWName              = sowDTO.SOWName,
                KategoriJabatanTitle = jabatanQuery.GetByPrimaryKey(1).Title,
                KategoriJabatan_FK   = 1,
                User_FK              = 0,
                UserName             = "",
                TglMulai             = now,
            });

            //RNO
            sowAssigns.Add(new SOWAssignDTO()
            {
                SOWAssign_PK         = 0,
                SOW_FK               = sowDTO.SOW_PK,
                SOWName              = sowDTO.SOWName,
                KategoriJabatanTitle = "RNO",//jabatanQuery.GetByPrimaryKey(6).Title,
                KategoriJabatan_FK   = 6,
                User_FK              = 0,
                UserName             = "",
                TglMulai             = now,
            });

            //RF
            sowAssigns.Add(new SOWAssignDTO()
            {
                SOWAssign_PK         = 0,
                SOW_FK               = sowDTO.SOW_PK,
                SOWName              = sowDTO.SOWName,
                KategoriJabatanTitle = jabatanQuery.GetByPrimaryKey(5).Title,
                KategoriJabatan_FK   = 5,
                User_FK              = 0,
                UserName             = "",
                TglMulai             = now,
            });

            //DT
            sowAssigns.Add(new SOWAssignDTO()
            {
                SOWAssign_PK         = 0,
                SOW_FK               = sowDTO.SOW_PK,
                SOWName              = sowDTO.SOWName,
                KategoriJabatanTitle = jabatanQuery.GetByPrimaryKey(2).Title,
                KategoriJabatan_FK   = 2,
                User_FK              = 0,
                UserName             = "",
                TglMulai             = now,
            });

            //Rigger
            sowAssigns.Add(new SOWAssignDTO()
            {
                SOWAssign_PK         = 0,
                SOW_FK               = sowDTO.SOW_PK,
                SOWName              = sowDTO.SOWName,
                KategoriJabatanTitle = jabatanQuery.GetByPrimaryKey(3).Title,
                KategoriJabatan_FK   = 3,
                User_FK              = 0,
                UserName             = "",
                TglMulai             = now,
            });


            sowDTO.SOWAssigns = sowAssigns;

            return(sowDTO);
        }