示例#1
0
        public IActionResult Post(CreateRecordModel model)
        {
            if (model.Data.IsEmpty())
            {
                return(JError("data is empty"));
            }
            Schema.Domain.Entity entityMeta = null;
            if (model.EntityId.HasValue && !model.EntityId.Value.Equals(Guid.Empty))
            {
                entityMeta = _entityFinder.FindById(model.EntityId.Value);
            }
            else if (model.EntityName.IsNotEmpty())
            {
                entityMeta = _entityFinder.FindByName(model.EntityName);
            }
            if (entityMeta == null)
            {
                return(NotFound());
            }
            var childAttributes = _attributeFinder.FindByEntityName(entityMeta.Name);

            if (model.Data.StartsWith("["))
            {
                var details = new List <Entity>();
                var items   = JArray.Parse(model.Data.UrlDecode());
                if (items.Count > 0)
                {
                    foreach (var c in items)
                    {
                        dynamic root   = JObject.Parse(c.ToString());
                        Entity  detail = new Entity(entityMeta.Name);
                        foreach (JProperty p in root)
                        {
                            var attr = childAttributes.Find(n => n.Name.IsCaseInsensitiveEqual(p.Name));
                            if (attr != null && p.Value != null)
                            {
                                detail.SetAttributeValue(p.Name.ToString().ToLower(), detail.WrapAttributeValue(_entityFinder, attr, p.Value.ToString()));
                            }
                        }
                        details.Add(detail);
                    }
                }
                return(_dataCreater.CreateMany(details).CreateResult(T));
            }
            else
            {
                dynamic root   = JObject.Parse(model.Data.UrlDecode());
                Entity  detail = new Entity(entityMeta.Name);
                foreach (JProperty p in root)
                {
                    var attr = childAttributes.Find(n => n.Name.IsCaseInsensitiveEqual(p.Name));
                    if (attr != null)
                    {
                        detail.SetAttributeValue(p.Name.ToString().ToLower(), detail.WrapAttributeValue(_entityFinder, attr, p.Value.ToString()));
                    }
                }
                var id = _dataCreater.Create(detail);
                return(CreateSuccess(new { id = id }));
            }
        }
示例#2
0
        public async Task <int> CreateAsync(CreateRecordModel createRecordModel, string userId)
        {
            var account = await _accountRepository.GetByIdAsync(createRecordModel.AccountId);

            if (account == null)
            {
                throw new BudgetValidationException(
                          string.Format(ValidationMessages.Common.EntityDoesNotExist, nameof(account), createRecordModel.AccountId));
            }

            if (account.UserId != userId)
            {
                throw new BudgetValidationException(
                          string.Format(ValidationMessages.Accounts.InvalidAccount, account.Name));
            }

            var record = new Record()
            {
                AccountId     = account.Id,
                Amount        = createRecordModel.Amount,
                DateAdded     = _dateTimeProvider.Now,
                Note          = createRecordModel.Note,
                CategoryId    = createRecordModel.CategoryId,
                PaymentTypeId = createRecordModel.PaymentTypeId,
                RecordType    = createRecordModel.RecordType,
            };

            var createdRecord = await _recordRepository.CreateAsync(record);

            return(createdRecord.Id);
        }
示例#3
0
        public IActionResult CreateRecord(CreateRecordModel model)
        {
            var board = _boards.GetEntity(model.BoardId);

            if (board == null)
            {
                return(RedirectToAction("Boards"));
            }
            if (ModelState.IsValid)
            {
                var column = board.Columns.FirstOrDefault(col => col.Id == model.ColumnId);
                var record = new Record
                {
                    Column = column,
                    Value  = model.Value.Trim()
                };
                _records.AddEntity(record);
                _records.Save();
            }
            else
            {
                ModelState.AddModelError("Name", "Missing name!");
            }
            return(RedirectToAction("Board", new { id = board.Id }));
        }
示例#4
0
        public async Task <IActionResult> Post([FromBody] CreateRecordModel model)
        {
            var result = await recordService.Create(UserId, model);

            if (result.Succeeded)
            {
                return(Ok(result.Response));
            }
            return(BadRequest(result.Error));
        }
示例#5
0
        public async Task CreateNotEnoughMoney()
        {
            var amount      = 11000;
            var description = "Create";
            var isIncome    = false;
            var model       = new CreateRecordModel
            {
                Amount      = amount,
                Description = description,
                IsIncome    = isIncome,
                CategoryId  = categoryId
            };
            var result = await recordService.Create(userId, model);

            Assert.IsFalse(result.Succeeded);
            Assert.AreEqual("Not enough money", result.Error.Message);
        }
示例#6
0
        public async Task CreateWrongCategoryId()
        {
            var amount      = 9000;
            var description = "Create";
            var isIncome    = false;
            var model       = new CreateRecordModel
            {
                Amount      = amount,
                Description = description,
                IsIncome    = isIncome,
                CategoryId  = wrongCategoryId
            };
            var result = await recordService.Create(userId, model);

            Assert.IsFalse(result.Succeeded);
            Assert.AreEqual("Category not Found", result.Error.Message);
        }
示例#7
0
        public async Task <ServiceResponse <RecordModel> > Create(string userId, CreateRecordModel model)
        {
            var category = await context.Categories.FindAsync(model.CategoryId);

            if (category == null)
            {
                return(Error("Category not Found"));
            }
            if (category.UserId != userId)
            {
                return(Error("Access Forbidden"));
            }
            var user = await context.Users.FindAsync(userId);

            if (user == null)
            {
                return(Error("User not Found"));
            }
            if (model.IsIncome)
            {
                user.Bill += model.Amount;
            }
            else
            {
                user.Bill -= model.Amount;
            }
            if (user.Bill < 0)
            {
                return(Error("Not enough money"));
            }
            var record = mapper.Map <CreateRecordModel, Record>(model);

            record.UserId = userId;
            try
            {
                await context.Records.AddAsync(record);

                await context.SaveChangesAsync();
            }
            catch
            {
                return(Error("Creation Failed"));
            }
            return(Success(mapper.Map <Record, RecordModel>(record)));
        }
示例#8
0
        public async Task Create()
        {
            var amount      = 9000;
            var description = "Create";
            var isIncome    = false;
            var model       = new CreateRecordModel
            {
                Amount      = amount,
                Description = description,
                IsIncome    = isIncome,
                CategoryId  = categoryId
            };
            var result = await recordService.Create(userId, model);

            Assert.AreEqual(amount, result.Response.Amount);
            Assert.AreEqual(description, result.Response.Description);
            Assert.AreEqual(isIncome, result.Response.IsIncome);
        }
示例#9
0
        public async Task <IActionResult> Post([FromBody] CreateRecordModel model)
        {
            try
            {
                //check that user is in team
                var user = await _userService.GetCurrentUserAsync(TenantId);

                if (user == null)
                {
                    return(Unauthorized());
                }

                //check that user has access to form
                var form = await _tenantRepository.GetFormForUserByFormId(user.Id, model.FormId, TenantId);

                if (form == null)
                {
                    return(Unauthorized());
                }

                var record = new Record
                {
                    FormId     = model.FormId,
                    RecordJson = JsonConvert.SerializeObject(model.ResponseJson),
                    Status     = RecordStatus.Submitted,
                    Location   = new Location
                    {
                        Latitude  = model.Latitude,
                        Longitude = model.Longitude,
                    },
                    UserId     = user.Id,
                    Message    = "Submitted",
                    LocalTitle = model.LocalTitle
                };
                await _tenantRepository.AddRecord(record, TenantId);

                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest());
            }
        }
示例#10
0
        public async Task <IActionResult> CreateRecord(CreateRecordModel model)
        {
            CustomValidation();

            var userId = User.GetSubjectId();

            var user = await _databaseContext.UserData.FirstOrDefaultAsync(UserIdPredicate(userId));

            if (user == null)
            {
                throw new HttpResponseException(null, HttpStatusCode.Unauthorized);
            }

            var storedCollection = await
                                   _databaseContext.Collection.FirstOrDefaultAsync(c =>
                                                                                   c.Id == model.CollectionId && c.OwnerId == user.Id);

            var storedRecordType =
                await _databaseContext.RecordType
                .FirstOrDefaultAsync(rt => rt.Id == model.RecordTypeId);

            var storedRecordFormat = await _databaseContext.RecordFormat.FirstOrDefaultAsync(
                rt => rt.Id == model.RecordFormatId);

            var storedImage =
                await _databaseContext.Image
                .FirstOrDefaultAsync(i => i.Id == model.ImageId && i.CreatorId == user.Id);

            var storedStyles = _databaseContext.Style.Where(s => model.StyleIds.Contains(s.Id));

            if (storedCollection == null || storedRecordType == null || storedStyles == null ||
                storedRecordFormat == null)
            {
                throw new HttpResponseException(null, HttpStatusCode.BadRequest);
            }

            var newRecord = new Record
            {
                Name           = model.Name,
                Artist         = model.Artist,
                Description    = model.Description,
                CollectionId   = storedCollection.Id,
                OwnerId        = user.Id,
                CreationDate   = DateTime.UtcNow,
                ImageId        = storedImage?.Id,
                RecordTypeId   = storedRecordType.Id,
                RecordFormatId = storedRecordFormat.Id,
                Label          = model.Label,
                Year           = model.Year,
                RecordLength   = model.RecordLength,
            };

            await _databaseContext.Record.AddAsync(newRecord);

            var newRecordStyles = storedStyles.Select(s => new RecordStyle
            {
                Record  = newRecord,
                StyleId = s.Id
            });

            await _databaseContext.RecordStyle.AddRangeAsync(newRecordStyles);

            await _databaseContext.SaveChangesAsync();

            await _userActivityService.CreateActivityAsync(UserActivityActionName.RecordCreate, user.Id,
                                                           record : newRecord);

            return(Created("/api/record", newRecord));
        }
示例#11
0
 public async Task <IActionResult> Create(CreateRecordModel createRecordModel)
 => Ok(await _recordService.CreateAsync(createRecordModel, LoggedInUserId));