Exemplo n.º 1
0
        public SaveResult <SOWEntryModel> Save(SOWDTO sowDTO, DateTime dateStamp)
        {
            ModelValidationResult validationResult = sowValidator.Validate(sowDTO);
            bool          success = false;
            SOWEntryModel model   = null;

            if (validationResult.IsValid)
            {
                tblT_SOW sow = Insert(sowDTO, dateStamp);
                SaveChanges();
                sowDTO.SOW_PK = sow.SOW_PK;
                AddSowAssign(sowDTO, dateStamp);
                AddSowTrack(sowDTO, dateStamp);
                SaveChanges();

                success = true;
                model   = sowEntryDataProvider.Get(sow.SOW_PK);
            }

            return(new SaveResult <SOWEntryModel>
            {
                Success = success,
                Message = validationResult.IsValid ? "Data successfully created." : "Validation error occured.",
                Model = model,
                ValidationResult = validationResult
            });
        }
        public IHttpActionResult Create([FromBody] SOWDTO sow)
        {
            ThrowIfUserHasNoRole(createRole);
            if (sow == null)
            {
                throw new KairosException("Missing model parameter");
            }

            if (sow.SOW_PK != 0)
            {
                throw new KairosException("Post method is not allowed because the requested primary key is must be '0' (zero) .");
            }
            using (var sowCreateHandler = new SOWCreateHandler(Db, ActiveUser, new SOWValidator(), new SOWFactory(Db, ActiveUser), new SOWAssignFactory(Db, ActiveUser), new SOWTrackFactory(Db, ActiveUser), new SOWQuery(Db), AccessControl))
            {
                using (var transaction = new TransactionScope())
                {
                    var saveResult = sowCreateHandler.Save(sowDTO: sow, dateStamp: DateTime.Now);
                    transaction.Complete();
                    if (saveResult.Success)
                    {
                        return(Ok(new SuccessResponse(saveResult.Model, saveResult.Message)));
                    }
                    return(Ok(new ErrorResponse(ServiceStatusCode.ValidationError, saveResult.ValidationResult, saveResult.Message)));
                }
            }
        }
Exemplo n.º 3
0
        private void UpdateSowTrack(SOWDTO sowDTO, DateTime dateStamp)
        {
            if (sowDTO == null)
            {
                throw new ArgumentNullException("SOW model is null.");
            }

            var tracks = Db.tblT_SOWTrack.Where(x => x.SOW_FK == sowDTO.SOW_PK);

            foreach (var track in tracks)
            {
                Db.tblT_SOWTrack.Remove(track);
            }
            foreach (var sowTrackDTO in sowDTO.SOWTracks)
            {
                if (sowTrackDTO.TipePekerjaan_FK == 0)
                {
                    continue;
                }
                sowTrackDTO.SOW_FK = sowDTO.SOW_PK;
                var           bts      = new BTSQuery(Db).GetByPrimaryKey(sowDTO.BTS_FK);
                tblT_SOWTrack sowTrack = sowTrackFactory.CreateFromDTO(sowTrackDTO, dateStamp);
                Db.tblT_SOWTrack.Add(sowTrack);
            }
        }
 public void UpdateSOW(SOWDTO SOWDTO, DateTime dateStamp)
 {
     if (SOWDTO == null)
     {
         throw new ArgumentNullException("SOW model is null.");
     }
     tblT_SOW SOW = SOWFactory.CreateFromDbAndUpdateFromDTO(SOWDTO, dateStamp);
 }
Exemplo n.º 5
0
        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);
                    }
                }
            }
        }
Exemplo n.º 6
0
        public tblT_SOW Insert(SOWDTO sowDTO, DateTime dateStamp)
        {
            if (sowDTO == null)
            {
                throw new ArgumentNullException("SOW model is null.");
            }
            tblT_SOW sow = sowFactory.CreateFromDTO(sowDTO, dateStamp);

            sowDTO.SOW_PK = sow.SOW_PK;
            return(Db.tblT_SOW.Add(sow));
        }
        public tblT_SOW AddSOW(SOWDTO SOWDTO, DateTime dateStamp)
        {
            if (SOWDTO == null)
            {
                throw new ArgumentNullException("SOW model is null.");
            }
            tblT_SOW SOW = SOWFactory.CreateFromDTO(SOWDTO, dateStamp);

            SOW           = Db.tblT_SOW.Add(SOW);
            SOWDTO.SOW_PK = SOW.SOW_PK;
            return(SOW);
        }
Exemplo n.º 8
0
        public void UpdateSOW(SOWDTO sowDTO, DateTime dateStamp)
        {
            if (sowDTO == null)
            {
                throw new ArgumentNullException("SOW model is null.");
            }
            tblT_SOW sow = sowFactory.CreateFromDbAndUpdateFromDTO(sowDTO, dateStamp);

            if (sow.StatusSOW_FK == 3)
            {
                throw new Kairos.KairosException("Cannot update this SOW because already approved.");
            }
        }
Exemplo n.º 9
0
        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);
            }
        }
        private SOWEntryFormData CreateFormData(SOWDTO sowDTO)
        {
            if (sowDTO == null)
            {
                return(new SOWEntryFormData());
            }

            SOWEntryFormData formData = new SOWEntryFormData();

            var project = new ProjectQuery(this.Db).GetByPrimaryKey(sowDTO.Project_FK);

            if (project != null)
            {
                formData.Projects.Add(project);
            }

            var bts = new BTSQuery(this.Db).GetByPrimaryKey(sowDTO.BTS_FK);

            if (bts != null)
            {
                formData.BTSes.Add(bts);
            }

            foreach (var assign in sowDTO.SOWAssigns)
            {
                var user = new UserQuery(Db).GetByPrimaryKey(assign.User_FK);
                if (user != null)
                {
                    formData.Users.Add(user);
                }
            }

            foreach (var track in sowDTO.SOWTracks)
            {
                sowDTO.Technology_FK = track.TipePekerjaan_FK;
                var technology = new TechnologyQuery(this.Db).GetByPrimaryKey((int)track.TipePekerjaan_FK);
                if (technology != null)
                {
                    formData.Technologies.Add(technology);
                }
            }

            return(formData);
        }
        private SOWEntryModel GetUpdateStateModel(int sowPK)
        {
            List <Control> formControls = CreateFormControls(sowPK);
            SOWDTO         sowDTO       = CreateModel(sowPK);

            if (sowDTO == null)
            {
                throw new KairosException($"Record with primary key '{sowDTO.SOW_PK}' is not found.");
            }

            SOWEntryFormData formData = CreateFormData(sowDTO);

            return(new SOWEntryModel()
            {
                FormData = formData,
                FormControls = formControls,
                Model = sowDTO,
            });
        }
Exemplo n.º 12
0
        public HttpResponseMessage Create(SOWDTO requestInfo)
        {
            try
            {
                var SOWWorkflow =
                    _IWkflowdefService.GetWkflowdefs().Find(p => p.Code == "SOW");

                int userID = int.Parse(Request.Headers.GetValues("userId").FirstOrDefault());

                var CreatedstatusID = SOWWorkflow.WkflowDefWkflowStats.Where(p => p.WkflowStat.Code.Contains("Created")).FirstOrDefault().WkflowStatId;

                int?orgid;

                if (requestInfo.OrgId != null)
                {
                    orgid = requestInfo.OrgId;
                }
                else
                {
                    orgid = _IUserService.GetUser(userID).OrgUsers.Where(p => p.Type == null || p.Type.Contains("Primary")).FirstOrDefault().OrgId;
                }


                var org      = _IOrgService.GetOrg((int)orgid);
                int?ccuserid = org.OrgUsers.Where(p => p.Type == "CustomerCare").Count() > 0 ? (int?)org.OrgUsers.Where(p => p.Type == "CustomerCare").FirstOrDefault().UserId : null;

                var WKflow = new WkflowInstance()
                {
                    Org              = org,
                    CreateDate       = DateTime.UtcNow,
                    DateLastMaint    = DateTime.UtcNow,
                    WkflowDef        = SOWWorkflow,
                    UserId           = userID,
                    CurrWkflowStatId = CreatedstatusID,
                    CCUserId         = ccuserid
                };

                var hist = new WkflowStepHist
                {
                    CreateDate    = DateTime.UtcNow,
                    DateLastMaint = DateTime.UtcNow,
                    WkflowStatId  = CreatedstatusID,
                    CreatedUserId = userID
                };
                var sowWkflow = new SowWkflow
                {
                    WkflowInstance    = WKflow,
                    ProjectName       = requestInfo.ProjectName,
                    Amend             = 0,
                    EffectiveDate     = DateTime.UtcNow,
                    LastReviewDate    = DateTime.UtcNow,
                    NextReviewDate    = DateTime.UtcNow.AddMonths(6),
                    MonthlyCommitment = requestInfo.Commitment
                };

                foreach (var attrib in requestInfo.Attribs)
                {
                    //var newatt = new SowWklowSowAttribute() { SowAttributeId = attrib.Id, SowWkflow = sowWkflow };
                    //newatt.SowAttributeValueHists.Add(new SowAttributeValueHist() { SowWklowSowAttribute = newatt, EffectiveDate = DateTime.UtcNow, SowAttributeId = attrib.Id, Qty = attrib.Qty, UnitPrice = attrib.UnitPrice, ExtendedPrice = attrib.ExtendedPrice });
                    //sowWkflow.SowWklowSowAttributes.Add(newatt);

                    var newatt = new SowWklowSowAttribute()
                    {
                        SowAttributeId = attrib.Id, SowWkflow = sowWkflow
                    };
                    newatt.SowAttributeValueHists.Add(new SowAttributeValueHist()
                    {
                        SowWklowSowAttribute = newatt, EffectiveDate = DateTime.UtcNow, Qty = attrib.Qty, UnitPrice = attrib.UnitPrice, ExtendedPrice = attrib.ExtendedPrice
                    });
                    sowWkflow.SowWklowSowAttributes.Add(newatt);
                }

                foreach (var docSetup in requestInfo.DocSetups)
                {
                    sowWkflow.SowWkflowDocSetups.Add(new SowWkflowDocSetup()
                    {
                        DocumentName = docSetup.Name, SowWkflow = sowWkflow, NoIndexes = docSetup.NoIndexes, NoDataFields = docSetup.NoDataFields, SLA = docSetup.SLA, Volume = docSetup.CommitVolume, ListPrice = docSetup.UnitPrice
                    });
                }

                if (requestInfo.RebateOverride)
                {
                    var reseller = org.OrgOrgs1.FirstOrDefault().Org.OrgReseller;
                    sowWkflow.SOWWkflowOrgResellerDiscOverrides.Add(new SOWWkflowOrgResellerDiscOverride {
                        Discount = requestInfo.ResellerRebate, EffectiveDate = DateTime.UtcNow, SowWkflow = sowWkflow, OrgReseller = reseller
                    });
                }

                WKflow.SowWkflows.Add(sowWkflow);
                WKflow.WkflowStepHists.Add(hist);
                _IWkflowinstanceService.AddWkflowinstance(WKflow);
                return(Request.CreateResponse <bool>(HttpStatusCode.OK, true));
            }
            catch (Exception e)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
        }
        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);
        }