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))); } } }
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); }
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); } } } }
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); }
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."); } }
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, }); }
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); }