/// <summary> /// Delete the progress for a specific assignment and the currently logged in user. /// </summary> public HttpResponseMessage Delete() { // Tried to fixx the "not being able to start an assignment if you reloaded the page during one" problem. if (_participant.Progress == null) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Geen opdracht is gestart.")); } try{ var timeDifference = TimeDifferenceHelper.GetTimeDifference(_participant.Progress.StartTime); if (timeDifference > _participant.Progress.Assignment.MaxSolveTime) { timeDifference = _participant.Progress.Assignment.MaxSolveTime; } var score = ScoreHelper.CreateScore(_participant.Progress.Assignment, _participant, false, timeDifference); _context.Scores.Add(score); _context.Progresses.Remove(_participant.Progress); _context.SaveChanges(); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Error bij het opslaan in de database.")); throw; } return(Request.CreateResponse(HttpStatusCode.OK)); }
/// <summary> /// Build and runs an assignment and checks the scores for the user submitted code. /// </summary> /// <param name="runJob">See RunController.</param> /// <returns></returns> public HttpResponseMessage Post(RunController.RunJob runJob) { _compiler.CompileFromPlainText(_participant, runJob.Code); var runResult = _runner.RunAndCheckInput(_participant); var correctOutput = IsCorrectOutput(runResult); var timeDifference = TimeDifferenceHelper.GetTimeDifference(_participant.Progress.StartTime); var score = ScoreHelper.CreateScore(_participant.Progress.Assignment, _participant, correctOutput, timeDifference); _context.Scores.Add(score); _context.Progresses.Remove(_participant.Progress); _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Created)); }
public void Execute(IServiceProvider serviceProvider) { SqlDataAccess sda = null; try { sda = new SqlDataAccess(); sda.openConnection(Globals.ConnectionString); #region | SERVICE | IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); #region | Validate Request | //Target yoksa veya Entity tipinde değilse, devam etme. if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity)) { return; } #endregion IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); #endregion Entity entity = (Entity)context.InputParameters["Target"]; #region | VARIABLES | bool hasMedia = false; List <ScoreLimit> lstLimits = new List <ScoreLimit>(); EntityReference portal = null; EntityReference user = null; if (entity.Contains("new_hasmedia") && entity["new_hasmedia"] != null) { hasMedia = (bool)entity["new_hasmedia"]; } if (entity.Contains("new_portalid") && entity["new_portalid"] != null) { portal = (EntityReference)entity["new_portalid"]; } if (entity.Contains("new_userid") && entity["new_userid"] != null) { user = (EntityReference)entity["new_userid"]; } #endregion MsCrmResultObject limitRes = new MsCrmResultObject(); if (hasMedia) { limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.GraffitiMedia, sda); } else { limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.GraffitiText, sda); } if (limitRes.Success) { lstLimits = (List <ScoreLimit>)limitRes.ReturnObject; for (int i = 0; i < lstLimits.Count; i++) { int recCount = 0; DateTime start = GeneralHelper.GetStartDateByScorePeriod(lstLimits[i].Period); DateTime end = GeneralHelper.GetEndDateByScorePeriod(lstLimits[i].Period); recCount = GraffitiHelper.GetUserGraffitiCount(portal.Id, user.Id, start, end, hasMedia, sda); if (lstLimits[i].Frequency >= recCount) { Score sc = new Score() { Point = lstLimits[i].Point, Portal = portal, User = user, ScoreType = (hasMedia ? ScoreType.GraffitiMedia : ScoreType.GraffitiText) }; MsCrmResult scoreRes = ScoreHelper.CreateScore(sc, service); break; } } } } catch (Exception ex) { //LOG throw new InvalidPluginExecutionException(ex.Message); } finally { if (sda != null) { sda.closeConnection(); } } }
public void Execute(IServiceProvider serviceProvider) { SqlDataAccess sda = null; try { sda = new SqlDataAccess(); sda.openConnection(Globals.ConnectionString); #region | SERVICE | IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); #region | Validate Request | //Target yoksa veya Entity tipinde değilse, devam etme. if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity)) { return; } #endregion IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); #endregion Entity entity = (Entity)context.InputParameters["Target"]; #region |DEFINE IMAGE IF EXISTS| Entity preImage = null; if (context.PreEntityImages.Contains("PreImage") && context.PreEntityImages["PreImage"] is Entity) { preImage = (Entity)context.PreEntityImages["PreImage"]; } #endregion #region | VARIABLES | string customerFirstName = null; string customerLastName = null; string customerMobilePhone = null; string customerFullName = null; string assemblerFullName = null; int statusCode = 0; int oldStatusCode = 0; AssemblerInfo assemblerInfo = null; List <ScoreLimit> lstLimits = new List <ScoreLimit>(); EntityReference portal = null; EntityReference user = null; if (preImage.Contains("new_portalid") && preImage["new_portalid"] != null) { portal = (EntityReference)preImage["new_portalid"]; } if (preImage.Contains("new_userid") && preImage["new_userid"] != null) { user = (EntityReference)preImage["new_userid"]; MsCrmResultObj <AssemblerInfo> resultAssembler = AssemblyRequestHelper.GetAssemblerInfo(user.Id, sda); if (resultAssembler.Success) { assemblerInfo = resultAssembler.ReturnObject; } else { throw new Exception("Anahtarcı bilgisi alınamadı.Hata:" + resultAssembler.Result); } } if (preImage.Contains("new_firstname") && preImage["new_firstname"] != null) { customerFirstName = preImage["new_firstname"].ToString(); } if (preImage.Contains("new_lastname") && preImage["new_lastname"] != null) { customerLastName = preImage["new_lastname"].ToString(); } if (preImage.Contains("new_mobilephone") && preImage["new_mobilephone"] != null) { customerMobilePhone = preImage["new_mobilephone"].ToString(); } if (!string.IsNullOrWhiteSpace(customerFirstName) && !string.IsNullOrWhiteSpace(customerLastName)) { customerFullName = customerFirstName + " " + customerLastName; } if (entity.Contains("statuscode") && entity["statuscode"] != null) { statusCode = ((OptionSetValue)entity["statuscode"]).Value; } if (preImage.Contains("statuscode") && preImage["statuscode"] != null) { oldStatusCode = ((OptionSetValue)preImage["statuscode"]).Value; } #endregion if (statusCode != oldStatusCode && (statusCode == (int)DiscoveryFormStatus.CrmConfirmed || statusCode == (int)DiscoveryFormStatus.Result_Negative)) { string statusText = string.Empty; if (statusCode == (int)DiscoveryFormStatus.CrmConfirmed) { statusText = "Kale Onayladı"; } else if (statusCode == (int)DiscoveryFormStatus.Result_Negative) { statusText = "Sonuç Olumsuz"; } string customerSmsText = @"Sayın {0}, {1} müşterisine ait Ücretsiz Keşif Formu durumu {2} olarak değişmiştir. Bilgilerinize."; Entity ent = new Entity("new_sms"); ent["new_message"] = string.Format(customerSmsText, assemblerFullName, customerFullName, statusText); ent["new_phonenumber"] = assemblerInfo.MobilePhoneNumber; ent["new_name"] = customerFirstName + " " + customerLastName + "|KGS Formu Durum Değişimi"; ent["new_userid"] = user; service.Create(ent); } if (entity.Contains("statuscode") && entity["statuscode"] != null && ((OptionSetValue)entity["statuscode"]).Value == (int)DiscoveryFormStatus.CrmConfirmed) { MsCrmResultObject limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.KGSSales, sda); if (limitRes.Success) { lstLimits = (List <ScoreLimit>)limitRes.ReturnObject; for (int i = 0; i < lstLimits.Count; i++) { Score sc = new Score() { Point = lstLimits[i].Point, Portal = portal, User = user, ScoreType = ScoreType.KGSSales }; MsCrmResult scoreRes = ScoreHelper.CreateScore(sc, service); if (scoreRes.Success) { break; } } } } } catch (Exception ex) { //LOG throw new InvalidPluginExecutionException(ex.Message); } finally { if (sda != null) { sda.closeConnection(); } } }
public void Execute(IServiceProvider serviceProvider) { SqlDataAccess sda = null; try { sda = new SqlDataAccess(); sda.openConnection(Globals.ConnectionString); #region | SERVICE | IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); #region | Validate Request | //Target yoksa veya Entity tipinde değilse, devam etme. if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity)) { return; } #endregion IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); #endregion Entity entity = (Entity)context.InputParameters["Target"]; #region |DEFINE IMAGE IF EXISTS| Entity postImage = null; if (context.PostEntityImages.Contains("PostImage") && context.PostEntityImages["PostImage"] is Entity) { postImage = (Entity)context.PostEntityImages["PostImage"]; } #endregion #region | VARIABLES | List <ScoreLimit> lstLimits = new List <ScoreLimit>(); EntityReference portal = null; EntityReference user = null; if (postImage.Contains("new_portalid") && postImage["new_portalid"] != null) { portal = (EntityReference)postImage["new_portalid"]; } if (postImage.Contains("new_userid") && postImage["new_userid"] != null) { user = (EntityReference)postImage["new_userid"]; } #endregion if (entity.Contains("statuscode") && entity["statuscode"] != null && ((OptionSetValue)entity["statuscode"]).Value == 1) { MsCrmResultObject limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.ForumSubject, sda); if (limitRes.Success) { lstLimits = (List <ScoreLimit>)limitRes.ReturnObject; for (int i = 0; i < lstLimits.Count; i++) { int recCount = 0; DateTime start = GeneralHelper.GetStartDateByScorePeriod(lstLimits[i].Period); DateTime end = GeneralHelper.GetEndDateByScorePeriod(lstLimits[i].Period); recCount = ForumHelper.GetUserForumSubjectCount(portal.Id, user.Id, start, end, sda); if (lstLimits[i].Frequency >= recCount) { Score sc = new Score() { Point = lstLimits[i].Point, Portal = portal, User = user, ScoreType = ScoreType.ForumSubject }; MsCrmResult scoreRes = ScoreHelper.CreateScore(sc, service); break; } } } } } catch (Exception ex) { //LOG throw new InvalidPluginExecutionException(ex.Message); } finally { if (sda != null) { sda.closeConnection(); } } }