private void UpdateSowAssign(SOWDTO sowDTO, DateTime dateStamp)
        {
            if (sowDTO == null)
            {
                throw new ArgumentNullException("SOW model is null.");
            }

            foreach (var sowAssignDTO in sowDTO.SOWAssigns)
            {
                sowAssignDTO.SOW_FK = sowDTO.SOW_PK;
                tblT_SOWAssign existingSowAssign = null;
                if (sowAssignDTO.SOWAssign_PK != 0)
                {
                    existingSowAssign = this.Db.tblT_SOWAssign.Find(sowAssignDTO.SOWAssign_PK);
                }

                bool isAssigned = false;

                if (existingSowAssign != null)
                {
                    isAssigned = existingSowAssign.User_FK != 0;
                }

                int assignedUserFk = 0;
                if (existingSowAssign != null && existingSowAssign.User_FK != null)
                {
                    assignedUserFk = existingSowAssign.User_FK.Value;
                }

                bool assignedUserIsChanged = assignedUserFk != sowAssignDTO.User_FK;
                if (isAssigned && assignedUserIsChanged)
                {
                    //create new row (history) based on changed user assign, and set its finish date
                    tblT_SOWAssign sowAssign = sowAssignFactory.CreateFromDTO(sowAssignDTO, dateStamp);
                    sowAssign.User_FK    = assignedUserFk;
                    sowAssign.TglSelesai = dateStamp;
                    Db.tblT_SOWAssign.Add(sowAssign);
                }
                //note that, CreateFromDbAndUpdateFromDTO method is also create a Modified state in db context object
                //so any update process is in the factory class
                if (sowAssignDTO.SOWAssign_PK != 0)
                {
                    tblT_SOWAssign sowAssignToUpdate = sowAssignFactory.CreateFromDbAndUpdateFromDTO(sowAssignDTO, dateStamp);
                }
                else
                {
                    if (assignedUserIsChanged)
                    {
                        sowAssignDTO.SOW_FK   = sowDTO.SOW_PK;
                        sowAssignDTO.TglMulai = dateStamp;
                        tblT_SOWAssign sowAssignToBeAdded = sowAssignFactory.CreateFromDTO(sowAssignDTO, dateStamp);
                        Db.tblT_SOWAssign.Add(sowAssignToBeAdded);
                    }
                }
            }
        }
Esempio n. 2
0
        public tblT_SOWAssign Insert(SOWAssignDTO sowAssignDTO, DateTime dateStamp)
        {
            if (sowAssignDTO == null)
            {
                throw new ArgumentNullException("SOWAssign model is null.");
            }
            tblT_SOWAssign sowAssign = sowAssignFactory.CreateFromDTO(sowAssignDTO, dateStamp);

            return(Db.tblT_SOWAssign.Add(sowAssign));
        }
        private void AddSowAssign(SOWDTO sowDTO, DateTime dateStamp)
        {
            if (sowDTO == null)
            {
                throw new ArgumentNullException("SOW model is null.");
            }

            foreach (var sowAssignDTO in sowDTO.SOWAssigns)
            {
                sowAssignDTO.SOW_FK = sowDTO.SOW_PK;
                tblT_SOWAssign sowAssign = sowAssignFactory.CreateFromDTO(sowAssignDTO, dateStamp);
                Db.tblT_SOWAssign.Add(sowAssign);
            }
        }