示例#1
0
        /// <summary>
        /// This method Clear
        /// </summary>
        public void Clear(bool justStatus = false)
        {
            // if the value for justStatus is false
            if (!justStatus)
            {
                // Clear all the controls
                this.ShipmentNameControl.Text     = "";
                this.SourceFolderTextBox.Text     = "";
                this.OutputFolderTextBox.Text     = "";
                this.BinCheckBox.Checked          = false;
                this.ObjCheckBox.Checked          = false;
                this.PackagesCheckBox.Checked     = false;
                this.ZipCheckBox.Checked          = false;
                this.CopyCheckBox.Checked         = false;
                this.AddTimeStampCheckBox.Checked = false;
                this.IgnoreFoldersListBox.Items.Clear();
            }

            // Clear the Status
            SolutionStatus status = new SolutionStatus();

            status.OutputFolderStatus = new FolderStatus();
            status.SourceFolderStatus = new FolderStatus();

            // Erase the status values
            this.DisplayShipmentStatus(status);

            // Hide the graph
            this.DestinationLabel.Visible = false;
            this.Graph.Visible            = false;
        }
示例#2
0
 public ActionResult Add(SolutionStatus model)
 {
     try
     {
         if (ModelState.IsValid)
         {
             if (model.Code > 0)
             {
                 var chk = _slnStatus.GetAll().Where(c => c.Name.ToUpper() == model.Name.ToUpper() || c.Code == model.Code).FirstOrDefault();
                 if (chk == null)
                 {
                     _slnStatus.Create(model);
                     TempData["Msg"] = _help.getMsg(AlertType.success.ToString(), "Added successfully!");
                     return(RedirectToAction("Index"));
                 }
                 else
                 {
                     return(Json(new { IsAuthenticated = true, IsSuccessful = false, Error = "The record already exist. Please check the records and try again!" }));
                 }
             }
             else
             {
                 return(Json(new { IsAuthenticated = true, IsSuccessful = false, Error = "Invalid Code!" }));
             }
         }
         else
         {
             return(Json(new { IsAuthenticated = true, IsSuccessful = false, Error = "Please fill the form correctly!" }));
         }
     }
     catch (Exception ex)
     {
         return(Json(new { IsAuthenticated = true, IsSuccessful = false, Error = ex.Message }));
     }
 }
        private static bool MustBePendingToChangeClaim <T>(
            SolutionStatus newSolnStatus,
            IEnumerable <T> oldItems,
            IEnumerable <T> newItems,
            IEqualityComparer <T> comparer,
            Action onError
            ) where T : IHasId
        {
            var newNotOld = newItems.Except(oldItems, comparer).ToList();
            var oldNotNew = oldItems.Except(newItems, comparer).ToList();
            var same      = !newNotOld.Any() && !oldNotNew.Any();

            if (same)
            {
                // no add/remove
                return(true);
            }

            if ((oldNotNew.Any() || newNotOld.Any()) &&
                !IsPendingForClaims(newSolnStatus))
            {
                // Can only add/remove Claim while pending
                onError();
                return(false);
            }

            return(true);
        }
        public void Update_DoesNotCallPrepareForSolution_WhenNotRegistered(SolutionStatus status)
        {
            var logic = new SolutionsExLogic(
                _solutionsModifier.Object,
                _capabilitiesImplementedModifier.Object,
                _standardsApplicableModifier.Object,
                _capabilitiesImplementedEvidenceModifier.Object,
                _standardsApplicableEvidenceModifier.Object,
                _capabilitiesImplementedReviewsModifier.Object,
                _standardsApplicableReviewsModifier.Object,
                _datastore.Object, _context.Object, _validator.Object, _filter.Object,
                _contacts.Object, _evidenceBlobStoreLogic.Object);
            var soln   = Creator.GetSolution(status: status);
            var solnEx = Creator.GetSolutionEx(soln: soln);

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());

            var valres = new ValidationResult();

            _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres);

            logic.Update(solnEx);

            _evidenceBlobStoreLogic.Verify(x => x.PrepareForSolution(soln.Id), Times.Never);
        }
示例#5
0
        public static Solutions GetSolution(
            string id             = null,
            string previousId     = null,
            string orgId          = null,
            SolutionStatus status = SolutionStatus.Draft,
            string createdById    = null,
            DateTime?createdOn    = null,
            string modifiedById   = null,
            DateTime?modifiedOn   = null)
        {
            var retval = new Solutions
            {
                Id             = id ?? Guid.NewGuid().ToString(),
                PreviousId     = previousId,
                OrganisationId = orgId ?? Guid.NewGuid().ToString(),
                Status         = status,
                CreatedById    = createdById ?? Guid.NewGuid().ToString(),
                CreatedOn      = createdOn ?? DateTime.Now,
                ModifiedById   = modifiedById ?? Guid.NewGuid().ToString(),
                ModifiedOn     = modifiedOn ?? DateTime.Now
            };

            Verifier.Verify(retval);
            return(retval);
        }
        private static bool MustBePendingToChangeReview <T>(
            SolutionStatus newSolnStatus,
            IEnumerable <T> oldItems,
            IEnumerable <T> newItems,
            IEqualityComparer <T> comparer,
            Action onError
            ) where T : IHasId
        {
            var newNotOld = newItems.Except(oldItems, comparer).ToList();
            var oldNotNew = oldItems.Except(newItems, comparer).ToList();

            if (newNotOld.Any() &&
                newNotOld.Count > oldNotNew.Count &&
                IsPendingForReview(newSolnStatus))
            {
                // added
                return(true);
            }

            var same = !newNotOld.Any() && !oldNotNew.Any();

            if (!same)
            {
                onError();
            }

            return(same);
        }
示例#7
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (header_ != null)
            {
                hash ^= Header.GetHashCode();
            }
            if (SolutionCompleted != false)
            {
                hash ^= SolutionCompleted.GetHashCode();
            }
            if (SolutionStatus != 0)
            {
                hash ^= SolutionStatus.GetHashCode();
            }
            if (PositionType != 0)
            {
                hash ^= PositionType.GetHashCode();
            }
            if (NumSats != 0)
            {
                hash ^= NumSats.GetHashCode();
            }
            return(hash);
        }
 private static bool IsPendingForEvidence(SolutionStatus status)
 {
     return
         (status == SolutionStatus.Registered ||
          status == SolutionStatus.CapabilitiesAssessment ||
          status == SolutionStatus.StandardsCompliance);
 }
示例#9
0
        public async Task <IActionResult> Post(
            Guid solutionId,
            SolutionStatus state,
            [FromServices] NotifyUsersService notifyUserService)
        {
            var solution = await dbContext.Solutions.SingleOrDefaultAsync(S => S.Id == solutionId);

            if (solution == null)
            {
                return(NotFound());
            }

            solution.Status = state;
            if (state == SolutionStatus.InProcessing)
            {
                solution.StartCheckingTime = DateTimeOffset.UtcNow;
            }
            else //Some end state
            {
                solution.TotalScore = await CalculateScore(solution.Id);

                solution.CheckedTime = DateTimeOffset.UtcNow;
            }
            await dbContext.SaveChangesAsync();

            await notifyUserService.NewSolutionAdded(solution);

            return(Ok());
        }
示例#10
0
        /// <summary>
        /// event is fired when the 'ShipSolutionButton' is clicked.
        /// </summary>
        private void ShipSolutionButton_Click(object sender, EventArgs e)
        {
            // Clear only the bottom part of the screen (Status, Graph and DestinationLabel
            this.Clear(true);

            // Capture the current shipment
            Shipment shipment = CaptureShipment();

            // If the shipment object exists
            if (NullHelper.Exists(shipment))
            {
                // Perform the shipment
                SolutionStatus status = ShipManager.Ship(shipment, this.Graph);

                // If the status object exists
                if (NullHelper.Exists(status))
                {
                    // hide the graph
                    this.Graph.Visible = false;

                    // Display the Status results
                    DisplayShipmentStatus(status);

                    // Display the text of the output folder
                    this.DestinationLabel.Text    = "Destination: " + shipment.OutputFolder.Path;
                    this.DestinationLabel.Visible = true;
                }
            }
        }
        public void MustBePending_Draft_Succeeds(SolutionStatus status)
        {
            var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object);
            var soln      = Creator.GetSolution(status: status);

            validator.MustBePending();
            var valres = validator.Validate(soln);

            valres.Errors.Should().BeEmpty();
        }
示例#12
0
 public void Create(SolutionStatus model)
 {
     try
     {
         _context.SolutionStatus.Add(model);
         _context.SaveChanges();
     }
     catch (Exception e)
     {
         throw;
     }
 }
示例#13
0
 public static Solution GetSolution(
     string id             = null,
     string orgId          = null,
     SolutionStatus status = SolutionStatus.Draft)
 {
     return(new Solution
     {
         Id = id ?? Guid.NewGuid().ToString(),
         OrganisationId = orgId ?? Guid.NewGuid().ToString(),
         Status = status
     });
 }
        public void MustBePending_NonDraft_ReturnsError(SolutionStatus status)
        {
            var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object);
            var soln      = Creator.GetSolution(status: status);

            validator.MustBePending();
            var valres = validator.Validate(soln);

            valres.Errors.Should()
            .ContainSingle(x => x.ErrorMessage == "Status must be Draft")
            .And
            .HaveCount(1);
        }
示例#15
0
 public static string ToRussian(this SolutionStatus solutionStatus)
 {
     return(solutionStatus switch
     {
         SolutionStatus.ErrorWhileCompile => "Ошибка системы при компиляции",
         SolutionStatus.CompileError => "Ошибка при компиляции",
         SolutionStatus.RunTimeError => "Ошибка во время исполнения",
         SolutionStatus.WrongAnswer => "Неверный ответ",
         SolutionStatus.TooLongWork => "Слишком долгое выполнение",
         SolutionStatus.InQueue => "В очереди на проверку",
         SolutionStatus.InProcessing => "Идет проверка",
         SolutionStatus.Successful => "Решено верно",
         _ => "Некорректный статус",
     });
        public void SolutionMustBeInReview_Review_Succeeds(SolutionStatus status)
        {
            var validator = new StandardsApplicableEvidenceValidator(_evidenceDatastore.Object, _claimDatastore.Object, _solutionDatastore.Object, _context.Object, _logger.Object);
            var soln      = Creator.GetSolution(status: status);
            var claim     = Creator.GetStandardsApplicable(solnId: soln.Id);
            var evidence  = Creator.GetStandardsApplicableEvidence(claimId: claim.Id);

            _claimDatastore.As <IClaimsDatastore <ClaimsBase> >().Setup(x => x.ById(evidence.ClaimId)).Returns(claim);
            _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln);

            validator.SolutionMustBeInReview();
            var valres = validator.Validate(evidence);

            valres.Errors.Should().BeEmpty();
        }
示例#17
0
        internal SolutionResult(XElement solutionNode)
        {
            status         = (SolutionStatus)int.Parse(solutionNode.Attribute("status").Value);
            correlationLog = solutionNode.Elements("log").Select(e => e.Value).FirstOrDefault() ?? "";
            var nodeDict = new Dictionary <NodeId, NodeSolution>();

            nodeSolutions = nodeDict;
            foreach (var nodeElement in solutionNode.Elements("node"))
            {
                nodeDict.Add(
                    new NodeId(nodeElement.Element(NodeId.xmlName)),
                    new NodeSolution(nodeElement.Element(NodeSolution.xmlName))
                    );
            }
        }
示例#18
0
        /// <summary>
        /// Сохранение решения задачи
        /// </summary>
        /// <param name="solutionStatus">Статус решения</param>
        /// <param name="handleSolutionStream">Обработчик потока решения</param>
        /// <exception cref="RetryException">ри возникновении данной ошибки возможно повторения выхова через некоторое время</exception>
        /// <exception cref="HttpException">Если при сохранении решения возникнет сетевая ошибка</exception>
        public void Post(SolutionStatus solutionStatus, Action <Stream> handleSolutionStream)
        {
            using (var client = new HttpClient())
            {
                if (!string.IsNullOrEmpty(_authorizationHeader))
                {
                    client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", _authorizationHeader);
                }
                client.BaseAddress = new Uri(_baseUrl);
                using (var stream = new MemoryStream())
                {
                    handleSolutionStream(stream);
                    //stream.Get
                    using (var multipartFormDataContent = new MultipartFormDataContent())
                    {
                        multipartFormDataContent.Add(new StringContent(solutionStatus.ToString()), '"' + "SolutionStatus" + '"');
                        multipartFormDataContent.Add(new ByteArrayContent(stream.ToArray()), '"' + "Solution" + '"', '"' + $"solution" + '"');
                        try
                        {
                            var res = client.PutAsync("api/problem/solution", multipartFormDataContent).GetAwaiter().GetResult();
                            if (res.IsSuccessStatusCode)
                            {
                                return;
                            }
                            if (!res.IsSuccessStatusCode && !_statusCodesToThrow.Contains((int)res.StatusCode))
                            {
                                throw new RetryException($"Invalid status code for sending request to {_baseUrl} with authorization{_authorizationHeader}",
                                                         new HttpException($"Invalid status code for sending request to {_baseUrl} with authorization{_authorizationHeader}",
                                                                           (int)res.StatusCode,
                                                                           res.ReasonPhrase,
                                                                           res.Content.ReadAsStringAsync().GetAwaiter().GetResult(),
                                                                           res.Headers.ToDictionary(x => x.Key, x => x.Value)));
                            }

                            throw new HttpException($"Invalid status code for sending request to {_baseUrl} with authorization{_authorizationHeader}",
                                                    (int)res.StatusCode,
                                                    res.ReasonPhrase,
                                                    res.Content.ReadAsStringAsync().GetAwaiter().GetResult(),
                                                    res.Headers.ToDictionary(x => x.Key, x => x.Value));
                        }
                        catch (HttpRequestException e)
                        {
                            throw new RetryException($"Invalid status code for sending request to {_baseUrl} with authorization{_authorizationHeader}", e);
                        }
                    }
                }
            }
        }
        public void Update_CallsPrepareForSolution_WhenRegistered(SolutionStatus status)
        {
            var logic = Create();
            var soln  = Creator.GetSolution(status: status);

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());

            var valres = new ValidationResult();

            _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres);

            logic.Update(soln);

            _evidenceBlobStoreLogic.Verify(x => x.PrepareForSolution(soln.Id), Times.Once);
        }
        public void Filter_Supplier_Returns_Own([ValueSource(nameof(Statuses))] SolutionStatus status)
        {
            var orgId = Guid.NewGuid().ToString();
            var ctx   = Creator.GetContext(orgId: orgId, role: Roles.Supplier);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var filter = new SolutionsFilter(_context.Object);
            var soln1  = Creator.GetSolution(status: status, orgId: orgId);
            var soln2  = Creator.GetSolution(status: status);
            var soln3  = Creator.GetSolution(status: status);
            var solns  = new[] { soln1, soln2, soln3 };

            var res = filter.Filter(solns);

            res.Should().BeEquivalentTo(soln1);
        }
        public void Update_DoesNotCallPrepareForSolution_WhenNotRegistered(SolutionStatus status)
        {
            var logic = new SolutionsLogic(_modifier.Object, _datastore.Object, _contacts.Object, _context.Object, _validator.Object, _filter.Object, _evidenceBlobStoreLogic.Object);
            var soln  = Creator.GetSolution(status: status);

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());

            var valres = new ValidationResult();

            _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres);

            logic.Update(soln);

            _evidenceBlobStoreLogic.Verify(x => x.PrepareForSolution(soln.Id), Times.Never);
        }
示例#22
0
        /// <summary>
        /// Сохранение решения задачи
        /// </summary>
        /// <param name="solutionStatus">Статус решения</param>
        /// <param name="handleSolutionStream">Обработчик потока решения</param>
        public void Post(SolutionStatus solutionStatus, Action <Stream> handleSolutionStream)
        {
            var solutionFileFormat = $"{solutionStatus}_{DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss")}";

            var    number   = 0;
            string fileName = "";

            do
            {
                fileName = Path.Combine(_solutionsDir, solutionFileFormat + (number > 0 ? $".{++number}" : ""));
            } while (File.Exists(fileName));
            using (var fileStream = new FileStream(fileName, FileMode.Create))
            {
                handleSolutionStream(fileStream);
            }
        }
        public void MustBePendingToChangeVersion_SameVersion_Succeeds(SolutionStatus status)
        {
            var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object);
            var soln      = Creator.GetSolution(status: status);

            soln.Version = "Original version";
            var solnOld = Creator.GetSolution(status: status, id: soln.Id);

            solnOld.Version = "Original version";
            _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(solnOld);

            validator.MustBePendingToChangeVersion();
            var valres = validator.Validate(soln);

            valres.Errors.Should().BeEmpty();
        }
示例#24
0
        public void Filter_None_Returns_Approved(
            [ValueSource(typeof(Creator), nameof(Creator.SolutionStatuses))] SolutionStatus status)
        {
            var filter = new SolutionsFilter();
            var solns  = new[]
            {
                Creator.GetSolution(status: status),
                Creator.GetSolution(status: status),
                Creator.GetSolution(status: status)
            };
            var expSolns = solns.Where(x => x.Status == SolutionStatus.Approved);

            var res = filter.Filter(solns);

            res.Should().BeEquivalentTo(expSolns);
        }
        public void MustBeValidStatusTransition_Valid_Succeeds(SolutionStatus oldStatus, SolutionStatus newStatus, string role)
        {
            var solnId = Guid.NewGuid().ToString();

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext(role: role));
            var validator = new SolutionsValidator(_context.Object, _logger.Object, _solutionDatastore.Object, _organisationDatastore.Object, _env.Object);
            var oldSoln   = Creator.GetSolution(id: solnId, status: oldStatus);
            var newSoln   = Creator.GetSolution(id: solnId, status: newStatus);

            _solutionDatastore.Setup(x => x.ById(solnId)).Returns(oldSoln);

            validator.MustBeValidStatusTransition();
            var valres = validator.Validate(newSoln);

            valres.Errors.Should().BeEmpty();
        }
示例#26
0
        public void SolutionMustBeInReview_Review_Succeeds(SolutionStatus status)
        {
            var validator = new CapabilitiesImplementedReviewsValidator(_reviewsDatastore.Object, _evidenceDatastore.Object, _claimDatastore.Object, _solutionDatastore.Object, _context.Object, _logger.Object);
            var soln      = Creator.GetSolution(status: status);
            var review    = GetCapabilitiesImplementedReview();
            var claim     = Creator.GetCapabilitiesImplemented(solnId: soln.Id);
            var evidence  = Creator.GetCapabilitiesImplementedEvidence(claimId: claim.Id);

            _evidenceDatastore.As <IEvidenceDatastore <EvidenceBase> >().Setup(x => x.ById(review.EvidenceId)).Returns(evidence);
            _claimDatastore.As <IClaimsDatastore <ClaimsBase> >().Setup(x => x.ById(evidence.ClaimId)).Returns(claim);
            _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln);

            validator.SolutionMustBeInReview();
            var valres = validator.Validate(review);

            valres.Errors.Should().BeEmpty();
        }
        public void Filter_Admin_Returns_All([ValueSource(nameof(Statuses))] SolutionStatus status)
        {
            var ctx = Creator.GetContext(role: Roles.Admin);

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var filter = new SolutionsFilter(_context.Object);
            var solns  = new[]
            {
                Creator.GetSolution(status: status),
                Creator.GetSolution(status: status),
                Creator.GetSolution(status: status)
            };

            var res = filter.Filter(solns);

            res.Should().BeEquivalentTo(solns);
        }
示例#28
0
        public void Filter_None_Returns_NonDraft([ValueSource(nameof(Statuses))] SolutionStatus status)
        {
            var ctx = Creator.GetContext(role: "None");

            _context.Setup(c => c.HttpContext).Returns(ctx);
            var filter = new SolutionFilter(_context.Object);
            var solns  = new[]
            {
                Creator.GetSolution(status: status),
                Creator.GetSolution(status: status),
                Creator.GetSolution(status: status)
            };
            var expSolns = solns.Where(x => x.Status != SolutionStatus.Draft);

            var res = filter.Filter(solns.AsQueryable());

            res.Should().BeEquivalentTo(expSolns);
        }
        public void SolutionMustBeInReview_NonReview_ReturnsError(SolutionStatus status)
        {
            var validator = new StandardsApplicableEvidenceValidator(_evidenceDatastore.Object, _claimDatastore.Object, _solutionDatastore.Object, _context.Object, _logger.Object);
            var soln      = Creator.GetSolution(status: status);
            var claim     = Creator.GetStandardsApplicable(solnId: soln.Id);
            var evidence  = Creator.GetStandardsApplicableEvidence(claimId: claim.Id);

            _claimDatastore.As <IClaimsDatastore <ClaimsBase> >().Setup(x => x.ById(evidence.ClaimId)).Returns(claim);
            _solutionDatastore.Setup(x => x.ById(soln.Id)).Returns(soln);

            validator.SolutionMustBeInReview();
            var valres = validator.Validate(evidence);

            valres.Errors.Should()
            .ContainSingle(x => x.ErrorMessage == "Can only add evidence if solution is in review")
            .And
            .HaveCount(1);
        }
示例#30
0
 public void UpdateSolutionStatus(SolutionStatus obj)
 {
     try
     {
         var dt = _context.SolutionStatus.Find(obj.SolutionStatusId);
         if (dt != null)
         {
             dt.Name   = obj.Name;
             dt.Code   = obj.Code;
             dt.Status = obj.Status;
             _context.SaveChanges();
         }
     }
     catch (Exception e)
     {
         throw;
     }
 }