public async Task <IActionResult> Create([FromBody] AddObjectDto objectDto)
        {
            var result = await _objectAdder.AddObject(objectDto);

            return(StatusCode(result, () => new
            {
                Message = "The object has been added",
                ObjectId = result.Result.Id
            }));
        }
Beispiel #2
0
        public async Task <CommandResult <OfferedObject> > AddObject(AddObjectDto objectDto)
        {
            if (objectDto is null)
            {
                return(new CommandResult <OfferedObject>(new ErrorMessage
                {
                    ErrorCode = "OBJECT.ADD.NULL",
                    Message = "Please fill the field with data",
                    StatusCode = System.Net.HttpStatusCode.BadRequest
                }));
            }

            if (objectDto.ObjectName.IsNullOrEmpty())
            {
                return(new CommandResult <OfferedObject>(new ErrorMessage
                {
                    ErrorCode = "OBJECT.ADD.OBJECTNAME.EMPTY",
                    Message = "Please fill the 'object name' field",
                    StatusCode = System.Net.HttpStatusCode.BadRequest
                }));
            }

            // Description could be null

            if (objectDto.Tags is null || objectDto.Tags.Count < 2)
            {
                return(new CommandResult <OfferedObject>(new ErrorMessage
                {
                    ErrorCode = "OBJECT.ADD.TAGS.TOO.FEW",
                    Message = "Please add at least two tags",
                    StatusCode = System.Net.HttpStatusCode.BadRequest
                }));
            }

            var invalidTags = from t in objectDto.Tags
                              where t.IsNullOrEmpty() || t.Length < 4
                              select t;

            if (invalidTags.Any())
            {
                return(new CommandResult <OfferedObject>(new ErrorMessage
                {
                    ErrorCode = "OBJECT.ADD.TAGS.INVALID",
                    Message = "Please send a valid tags",
                    StatusCode = System.Net.HttpStatusCode.BadRequest
                }));
            }


            var alreadyExistedTags = (from t in _tagRepo.Table
                                      where objectDto.Tags.Any(tt => tt == t.Name) && t.TagStatus == TagStatus.Ok
                                      select t).ToList();

            // No Logic for not existed tags, just discard them.

            var objectTags = alreadyExistedTags.Select(t => new ObjectTag
            {
                TagId = t.TagId
            }).ToList();

            var(login, ownerUser) = await _userDataManager.AddCurrentUserIfNeeded();

            var @object = new OfferedObject
            {
                Description            = objectDto.Description,
                Name                   = objectDto.ObjectName,
                PublishedAt            = DateTime.UtcNow,
                Tags                   = objectTags,
                OwnerLoginId           = login.LoginId,
                CurrentTransactionType = objectDto.Type
            };


            _objectRepo.Add(@object);
            _objectRepo.SaveChanges();
            return(new CommandResult <OfferedObject>(@object));
        }
Beispiel #3
0
 Task <CommandResult <OfferedObject> > IObjectService.AddObject(AddObjectDto objectDto) => _objectAdder8Deleter.AddObject(objectDto);
Beispiel #4
0
 public Task <CommandResult <OfferedObject> > AddObject(AddObjectDto objectDto)
 {
     return(_objectService.AddObject(objectDto));
 }