示例#1
0
        public long Add(Models.DTOs.Message.Add item, long messageTypeId)
        {
            if (item == null)
            {
                throw new NullReferenceException("Views.Message.Add");
            }

            if (string.IsNullOrEmpty(item.Text))
            {
                throw new ArgumentNullException("Views.Message.Add.Text");
            }

            var msg = new Models.Message()
            {
                Text          = item.Text,
                MessageTypeId = messageTypeId,
                InsertDate    = (long)DateTimeOffset.Now.ToUniversalTime().Subtract(
                    new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
                    ).TotalMilliseconds
            };

            _context.Messages.Add(msg);
            _context.SaveChanges();

            return(msg.Id);
        }
示例#2
0
        private async Task <IHttpActionResult> Add(Models.DTOs.Message.Add message, long messageTypeId)
        {
            if (!ModelState.IsValid)
            {
                return(base.ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)));
            }

            var task1 = Task.Run(() => _message.Add(message, messageTypeId));

            try{
                await Task.WhenAll(task1);
            }catch (ArgumentNullException) {
                return(BadRequest(Events.MissingParameter.ToString()));
            }catch (NullReferenceException) {
                return(BadRequest(Events.MissingObject.ToString()));
            }catch (AggregateException ae) {
                var ex = ae.Flatten().InnerException;

                if (ex is ArgumentNullException)
                {
                    return(BadRequest(Events.MissingParameter.ToString()));
                }

                _logger.Error(String.Format("Error adding log message [{0}]", Events.AddError), ex);
                return(StatusCode(HttpStatusCode.InternalServerError));
            }

            if (task1.Status != TaskStatus.RanToCompletion)
            {
                _logger.Error(String.Format("Add log message task did not complete [{0}]", Events.AddError), task1.Exception);
                return(StatusCode(HttpStatusCode.InternalServerError));
            }

            return(StatusCode(HttpStatusCode.Created));
        }
        public void BlankMessageText_ErrorReturned()
        {
            // Arrange
            var newMessage = new Models.DTOs.Message.Add("");

            // Act
            var exception = Record.Exception(() => message.Add(newMessage, (long)Constants.MessageType.Error));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <ArgumentNullException>(exception);
        }
示例#4
0
 public async Task <IHttpActionResult> Add_Info([FromBody] Models.DTOs.Message.Add message)
 {
     return(await Add(message, (long)Constants.MessageType.Info));
 }