public Annotation Create(CreateAnnotationCommand cmd)
        {
            try {
                using (var transaction = context.Database.BeginTransaction()) {
                    var from = NullVerifier(() => context.Documents
                                            .Include(d => d.File)
                                            .FirstOrDefault(d => d.Id == cmd.FromDocumentId));

                    if (from.File == null)
                    {
                        throw new FormFieldError(FormFieldError.notFound, "file");
                    }


                    var to = context.Documents.FirstOrDefault(d =>
                                                              d.DocumentTypeId == cmd.ToDocumentTypeId &&
                                                              d.EntityId == cmd.ToEntityId &&
                                                              d.Number == cmd.ToNumber &&
                                                              d.PublicationYear == cmd.ToPublicationYear
                                                              );

                    var annotation = new Annotation {
                        AnnotationTypeId = cmd.AnnotationTypeId,
                        Description      = cmd.Description,
                        FromDocumentId   = from.Id
                    };

                    if (to == null)
                    {
                        to = new Document {
                            DocumentTypeId  = cmd.ToDocumentTypeId,
                            EntityId        = cmd.ToEntityId,
                            Number          = cmd.ToNumber,
                            PublicationYear = cmd.ToPublicationYear,
                            PublicationDate = cmd.ToPublicationDate
                        };
                        context.Documents.Add(to);
                        context.SaveChanges();
                    }

                    if (from.PublicationYear < to.PublicationYear)
                    {
                        throw new FormFieldError(FormFieldError.invalidDate, new[] { "toPublicationYear", "fromPublicationYear" });
                    }
                    // TODO - verificar si el año es el mismo y la entidad es la misma entonces el numero debe ser mayor siempre que sea parseables a numeros

                    annotation.ToDocumentId = to.Id;

                    context.Annotations.Add(annotation);
                    context.SaveChanges();
                    context.Database.CommitTransaction();

                    return(annotation);
                }
            } catch (Exception e) {
                throw WrapOracleException(e);
            }
        }
示例#2
0
        private void CreateAnnotationImpl(CreateAnnotationCommand command)
        {
            AnnotationModel annotationModel = currentWorkspace.AddAnnotation(
                command.AnnotationText,
                command.AnnotationDescriptionText,
                command.ModelGuid);

            CurrentWorkspace.RecordCreatedModel(annotationModel);
        }
        public void CreateAnnotationCommand_Constructor()
        {
            //Arrange
            XmlDocument        xmlDocument    = new XmlDocument();
            var                guid           = Guid.NewGuid();
            IEnumerable <Guid> annotationGuid = new[] { guid };

            //Act
            var command1          = new CreateAnnotationCommand(annotationGuid, string.Empty, string.Empty, 100, 100, true);
            var serializedCommand = command1.Serialize(xmlDocument);

            //Assert
            Assert.IsNotNull(command1);
            Assert.AreEqual(command1.ModelGuid.ToString(), guid.ToString());
            Assert.IsNotNull(serializedCommand);
        }
示例#4
0
 void CreateAnnotationImpl(CreateAnnotationCommand command)
 {
     AnnotationModel annotationModel = currentWorkspace.AddAnnotation(command.AnnotationText, command.ModelGuid);
     
     CurrentWorkspace.RecordCreatedModel(annotationModel);
 }
 public IActionResult Post([FromBody] CreateAnnotationCommand cmd)
 => createCommand.Execute(cmd).Match(
     Succ: x => x.Match <IActionResult>(Ok, BadRequest),
     Fail: ex => StatusCode(500, ex)
     );