コード例 #1
0
        public IHttpActionResult Post([FromBody] ExpenseGroup expenseGroup)
        {
            // TODO: figure out why this doesn't work??!! :(

            try
            {
                if (expenseGroup == null)
                {
                    return(BadRequest());
                }

                // simulate create
                expenseGroup.Id = ExpenseGroup.Max(eg => eg.Id) + 1;
                ExpenseGroup.Add(expenseGroup); // should return fresh copy of created entity
                bool created = true;

                if (created)
                {
                    return(Created($"{Request.RequestUri}/{expenseGroup.Id}", expenseGroup));
                }

                return(BadRequest());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
コード例 #2
0
        public RepositoryActionResult <ExpenseGroup> EditExpenseGroup(ExpenseGroup expenseGroup)
        {
            try
            {
                var existingEG = _context.ExpenseGroups
                                 .FirstOrDefault(eg => eg.Id == expenseGroup.Id);

                if (existingEG == null)
                {
                    return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.NotFound));
                }

                _context.Entry(existingEG).State = EntityState.Detached;

                _context.ExpenseGroups.Attach(expenseGroup);

                _context.Entry(expenseGroup).State = EntityState.Modified;

                var result = _context.SaveChanges();

                if (result == 0)
                {
                    return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.NothingModified, null));
                }
                else
                {
                    return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.Updated));
                }
            }
            catch (Exception ex)
            {
                return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.Error, ex));
            }
        }
コード例 #3
0
        public async Task <ActionResult> Create(ExpenseGroup expenseGroup)
        {
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                var userId         = claimsIdentity.FindFirst("unique_user_key").Value;

                // an expensegroup is created with status "Open", for the current user
                expenseGroup.ExpenseGroupStatusId = 1;
                expenseGroup.UserId = userId;

                var serializedItemToCreate = JsonConvert.SerializeObject(expenseGroup);

                var response = await client.PostAsync("api/expensegroups",
                                                      new StringContent(serializedItemToCreate,
                                                                        System.Text.Encoding.Unicode, "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred"));
                }
            }
            catch
            {
                return(Content("An error occurred."));
            }
        }
コード例 #4
0
        public async Task <ActionResult> Edit(int id, ExpenseGroup expenseGroup)
        {
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                var serializedItemToUpdate = JsonConvert.SerializeObject(expenseGroup);

                var response = await client.PutAsync("api/expensegroups/" + id,
                                                     new StringContent(serializedItemToUpdate,
                                                                       System.Text.Encoding.Unicode, "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred."));
                }
            }
            catch (Exception)
            {
                return(Content("An error occurred."));
            }
        }
コード例 #5
0
        public async Task <ActionResult> Edit(int id, ExpenseGroup expenseGroup)
        {
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                // create a JSON Patch Document
                JsonPatchDocument <DTO.ExpenseGroup> patchDoc = new JsonPatchDocument <DTO.ExpenseGroup>();
                patchDoc.Replace(eg => eg.Title, expenseGroup.Title);
                patchDoc.Replace(eg => eg.Description, expenseGroup.Description);

                // serialize and PATCH
                var serializedItemToUpdate = JsonConvert.SerializeObject(patchDoc);

                var response = await client.PatchAsync("api/expensegroups/" + id,
                                                       new StringContent(serializedItemToUpdate,
                                                                         System.Text.Encoding.Unicode, "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred"));
                }
            }
            catch
            {
                return(Content("An error occurred"));
            }
        }
コード例 #6
0
        public async Task <ActionResult> Create(ExpenseGroup expenseGroup)
        {
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                // an expensegroup is created with status "Open", for the current user
                expenseGroup.ExpenseGroupStatusId = 1;
                expenseGroup.UserId = @"https://expensetrackeridsrv3/embedded_1";

                var serializedItemToCreate = JsonConvert.SerializeObject(expenseGroup);

                var response = await client.PostAsync("api/expensegroups",
                                                      new StringContent(serializedItemToCreate,
                                                                        System.Text.Encoding.Unicode,
                                                                        "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred."));
                }
            }
            catch
            {
                return(Content("An error occurred."));
            }
        }
コード例 #7
0
 public static Engine.Core.ExpenseGroup ToModel(this ExpenseGroup expenseGroup)
 {
     return(new Engine.Core.ExpenseGroup()
     {
         Id = expenseGroup.ExpenseGroupId,
         Code = expenseGroup.Code,
         Description = expenseGroup.Description,
         IsActive = expenseGroup.IsActive
     });
 }
コード例 #8
0
 public static ExpenseGroupDTO CreateExpenseGroupDTO(ExpenseGroup expenseGroup)
 {
     return(new ExpenseGroupDTO()
     {
         Description = expenseGroup.Description,
         ExpenseGroupStatusId = expenseGroup.ExpenseGroupStatusId,
         Id = expenseGroup.Id,
         Title = expenseGroup.Title,
         Expenses = expenseGroup.Expenses.Select(e => ExpenseFactory.CreateExpenseDTO(e)).ToList()
     });
 }
コード例 #9
0
 public DTO.ExpenseGroup CreateExpenseGroup(ExpenseGroup expenseGroup)
 {
     return(new DTO.ExpenseGroup()
     {
         Description = expenseGroup.Description,
         ExpenseGroupStatusId = expenseGroup.ExpenseGroupStatusId,
         Id = expenseGroup.Id,
         Title = expenseGroup.Title,
         UserId = expenseGroup.UserId,
         Expenses = expenseGroup.Expenses.Select(e => expenseFactory.CreateExpense(e)).ToList()
     });
 }
コード例 #10
0
        public void WhenUpdateInvoked()
        {
            var expenseGroup = new ExpenseGroup()
            {
                Name = "Group 1"
            };

            _expenseGroupRepository.Setup(x => x.Edit(expenseGroup));
            _groupServiceMock.Update(expenseGroup);
            _expenseGroupRepository.Verify(m => m.Edit(It.IsAny <ExpenseGroup>()), Times.Once);
            _unitOfWork.Verify(m => m.Commit(), Times.Once);
        }
コード例 #11
0
        private ExpenseGroupDto GetExpenseGroupDtoFromExpenseGroup(ExpenseGroup expenseGroup)
        {
            var expenseGroupDto = new ExpenseGroupDto()
            {
                Id             = Guid.Parse(expenseGroup.Id),
                Name           = expenseGroup.Name,
                Active         = expenseGroup.Active,
                CreationDate   = expenseGroup.CreationDate,
                LastUpdateDate = expenseGroup.LastUpdateDate
            };

            return(expenseGroupDto);
        }
コード例 #12
0
        private ExpenseGroup GetExpenseGroupFromExpenseGroupDto(ExpenseGroupDto expenseGroupDto)
        {
            var expenseGroup = new ExpenseGroup()
            {
                Id             = expenseGroupDto.Id.ToString(),
                UserId         = expenseGroupDto.UserId.ToString(),
                Name           = expenseGroupDto.Name,
                Active         = expenseGroupDto.Active,
                CreationDate   = expenseGroupDto.CreationDate,
                LastUpdateDate = expenseGroupDto.LastUpdateDate
            };

            return(expenseGroup);
        }
コード例 #13
0
        public ActionResult CreateGroup(ExpenseGroupVM data)
        {
            if (!ModelState.IsValid)
            {
                return(View("AddGroup", data));
            }

            var groupItem = new ExpenseGroup
            {
                Name = data.Name
            };

            _groupService.Create(groupItem);
            return(RedirectToAction("Index"));
        }
コード例 #14
0
        public void WhenGetByIdIsInvoked()
        {
            var expenseGroup = new ExpenseGroup()
            {
                Id = 1, Name = "Group 1"
            };

            _expenseGroupRepository.Setup(x => x.GetById(groupId)).Returns(expenseGroup);
            var result = _groupServiceMock.GetById(groupId);

            Assert.That(result, Is.InstanceOf <ExpenseGroup>());
            Assert.AreEqual(expenseGroup.Name, result.Name);
            Assert.AreEqual(expenseGroup.Id, result.Id);
            _unitOfWork.Verify(m => m.Commit(), Times.Never);
        }
コード例 #15
0
        public ExpenseGroup Save([FromBody] ExpenseGroup model)
        {
            ModelState.Validate();

            if (model.Id > 0)
            {
                _repository.Update(model);
            }
            else
            {
                _repository.Insert(model);
            }

            return(model);
        }
コード例 #16
0
        private List <ExpenseGroup> GenerateEntities()
        {
            Dictionary <string, string> expenseGroupNames = new Dictionary <string, string>
            {
                { "Битови сметки", "Household bills" },
                { "Жилище", "Housing" },
                { "Храна и консумативи", "Food and supplies" },
                { "Заеми", "Loans" },
                { "Транспорт", "Transportation" },
                { "Автомобил", "Car" },
                { "Деца", "Children" },
                { "Дрехи и обувки", "Clothes and shoes" },
                { "Лични", "Personal" },
                { "Цигари и алкохол", "Cigarettes and alcohol" },
                { "Развлечения", "Entertainment" },
                { "Хранене навън", "Eating out" },
                { "Образование", "Education" },
                { "Подаръци", "Gifts" },
                { "Спорт/Хоби", "Sports / Hobbies" },
                { "Пътуване/Отдих", "Travel / Leisure" },
                { "Медицински", "Medical" },
                { "Домашни любимци", "Pets" },
                { "Разни", "Miscellaneous" }
            };

            List <ExpenseGroup> expenseGroups = new List <ExpenseGroup>();

            foreach (var keyValuePair in expenseGroupNames)
            {
                ExpenseGroup expenseGroup = new ExpenseGroup()
                {
                    CreatedOn  = DateTime.UtcNow,
                    ModifiedOn = null,
                    IsDeleted  = false,
                    DeletedOn  = null,
                    NameEN     = keyValuePair.Value,
                    NameBG     = keyValuePair.Key,
                    IsMain     = true
                };

                expenseGroups.Add(expenseGroup);
            }

            return(expenseGroups);
        }
コード例 #17
0
 /// <summary>
 /// Return bool if ok, the newly-created ExpenseGroup is still available (including
 /// the id) to the calling class.
 /// </summary>
 /// <param name="eg"></param>
 /// <returns></returns>
 public RepositoryActionResult <ExpenseGroup> InsertExpenseGroup(ExpenseGroup eg)
 {
     try
     {
         _ctx.ExpenseGroups.Add(eg);
         var result = _ctx.SaveChanges();
         if (result > 0)
         {
             return(new RepositoryActionResult <ExpenseGroup>(eg, RepositoryActionStatus.Created));
         }
         else
         {
             return(new RepositoryActionResult <ExpenseGroup>(eg, RepositoryActionStatus.NothingModified, null));
         }
     }
     catch (Exception ex)
     {
         return(new RepositoryActionResult <ExpenseGroup>(null, RepositoryActionStatus.Error, ex));
     }
 }
コード例 #18
0
        public RepositoryActionResult <ExpenseGroup> UpdateExpenseGroup(ExpenseGroup eg)
        {
            try
            {
                // you can only update when an expensegroup already exists for this id

                var existingEG = _ctx.ExpenseGroups.FirstOrDefault(exg => exg.Id == eg.Id);

                if (existingEG == null)
                {
                    return(new RepositoryActionResult <ExpenseGroup>(eg, RepositoryActionStatus.NotFound));
                }

                // change the original entity status to detached; otherwise, we get an error on attach
                // as the entity is already in the dbSet

                // set original entity state to detached
                _ctx.Entry(existingEG).State = EntityState.Detached;

                // attach & save
                _ctx.ExpenseGroups.Attach(eg);

                // set the updated entity state to modified, so it gets updated.
                _ctx.Entry(eg).State = EntityState.Modified;


                var result = _ctx.SaveChanges();
                if (result > 0)
                {
                    return(new RepositoryActionResult <ExpenseGroup>(eg, RepositoryActionStatus.Updated));
                }
                else
                {
                    return(new RepositoryActionResult <ExpenseGroup>(eg, RepositoryActionStatus.NothingModified, null));
                }
            }
            catch (Exception ex)
            {
                return(new RepositoryActionResult <ExpenseGroup>(null, RepositoryActionStatus.Error, ex));
            }
        }
コード例 #19
0
        public IHttpActionResult Get(int id, string fields = null)
        {
            try
            {
                bool          includeExpenses = false;
                List <string> lstOfFields     = new List <string>();

                // we should include expenses when the fields-string contains "expenses"
                if (fields != null)
                {
                    lstOfFields     = fields.ToLower().Split(',').ToList();
                    includeExpenses = lstOfFields.Any(f => f.Contains("expenses"));
                }

                ExpenseGroup expenseGroup = null;
                if (includeExpenses)
                {
                    expenseGroup = _repo.GetExpenseGroupWithExpenses(id);
                }
                else
                {
                    expenseGroup = _repo.GetExpenseGroup(id);
                }

                if (expenseGroup != null)
                {
                    return(Ok(ExpenseGroupFactory.CreateDataShapedObjectExpenseGroup(expenseGroup, lstOfFields)));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
コード例 #20
0
        public OperationResult <ExpenseGroup> Add(ExpenseGroup expenseGroup)
        {
            var serviceResult = new OperationResult <ExpenseGroup>();

            try
            {
                expenseGroup.Id             = Guid.NewGuid().ToString();
                expenseGroup.CreationDate   = DateTime.Now;
                expenseGroup.LastUpdateDate = DateTime.Now;

                var createdExpenseGroup = this.unitOfwork.ExpenseGroupRepository.Add(expenseGroup);
                this.unitOfwork.SaveChanges();

                serviceResult = this.serviceResultBuilder.BuildOperationResult(createdExpenseGroup, OperationResultType.Success, string.Empty);
            }
            catch
            {
                var message = $"There was an error while trying to add Expense Group {expenseGroup.Name}";
                serviceResult = this.serviceResultBuilder.BuildOperationResult(expenseGroup, OperationResultType.Error, message);
            }

            return(serviceResult);
        }
コード例 #21
0
        public RepositoryActionResult <ExpenseGroup> AddExpenseGroup(ExpenseGroup expenseGroup)
        {
            try
            {
                _context.ExpenseGroups
                .Add(expenseGroup);

                var result = _context.SaveChanges();

                if (result > 0)
                {
                    return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.Created));
                }
                else
                {
                    return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.NothingModified));
                }
            }
            catch (Exception ex)
            {
                return(new RepositoryActionResult <ExpenseGroup>(expenseGroup, RepositoryActionStatus.Error, ex));
            }
        }
コード例 #22
0
        public OperationResult <ExpenseGroup> Edit(ExpenseGroup expenseGroup)
        {
            var operationResult = new OperationResult <ExpenseGroup>();

            try
            {
                var expenseGroupToEdit = this.unitOfwork.ExpenseGroupRepository.GetById(Guid.Parse(expenseGroup.Id));

                expenseGroupToEdit.Name           = expenseGroup.Name;
                expenseGroupToEdit.Active         = expenseGroup.Active;
                expenseGroupToEdit.LastUpdateDate = DateTime.Now;

                this.unitOfwork.SaveChanges();

                operationResult = serviceResultBuilder.BuildOperationResult(expenseGroupToEdit, OperationResultType.Success, string.Empty);
            }
            catch
            {
                var message = $"There was an error while trying to update Expense Group with Id {expenseGroup.Id}";
                operationResult = serviceResultBuilder.BuildOperationResult(expenseGroup, OperationResultType.Error, message);
            }

            return(operationResult);
        }
 public ActionResult Create(ExpenseGroup expenseGroup)
 {
     return(View());
 }
コード例 #24
0
 public object CreateDataShapedObject(ExpenseGroup expenseGroup, List <string> fields)
 {
     return(CreateDataShapedObject(CreateExpenseGroup(expenseGroup), fields));
 }
コード例 #25
0
 public SetNewExpenseGroupMessage(ExpenseGroup expenseGroup)
 {
     ExpenseGroup = expenseGroup;
 }
コード例 #26
0
        public async Task <ActionResult> Edit(int id, ExpenseGroup expenseGroup)
        {
            #region editusingput
            //try
            //{
            //    var client = ExpenseTrackerHttpClient.GetClient();

            //    // serialize & PUT
            //    var serializedItemToUpdate = JsonConvert.SerializeObject(expenseGroup);

            //    var response = await client.PutAsync("api/expensegroups/" + id,
            //        new StringContent(serializedItemToUpdate,
            //        System.Text.Encoding.Unicode, "application/json"));

            //    if (response.IsSuccessStatusCode)
            //    {
            //        return RedirectToAction("Index");
            //    }
            //    else
            //    {
            //        return Content("An error occurred");
            //    }

            //}
            //catch
            //{
            //    return Content("An error occurred");
            //}
            #endregion

            #region editusingpatch
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                JsonPatchDocument <DTO.ExpenseGroup> patchDoc = new JsonPatchDocument <ExpenseGroup>();
                patchDoc.Replace(eg => eg.Title, expenseGroup.Title);
                patchDoc.Replace(eg => eg.Description, expenseGroup.Description);

                var serializedItemToUpdate = JsonConvert.SerializeObject(patchDoc);

                var response = await client.PatchAsync("api/expensegroups/" + id,
                                                       new StringContent(serializedItemToUpdate, System.Text.Encoding.Unicode, "application/json"));



                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred"));
                }
            }
            catch
            {
                return(Content("An error occurred"));
            }
            #endregion
        }
コード例 #27
0
 public ExpenseGroup Add(ExpenseGroup newExpenseGroup)
 {
     return(this.context.ExpenseGroups.Add(newExpenseGroup));
 }
コード例 #28
0
 public ActionResult Edit(int id, ExpenseGroup expenseGroup)
 {
     return(View());
 }
コード例 #29
0
        protected override void Seed(ExpenseTracker.Repository.ExpenseTrackerContext context)
        {
            var defaultGroup = new ExpenseGroup()
            {
                Name = "Europian trip"
            };

            context.ExpenseGroups.Add(defaultGroup);

            var userList = new List <ExpenseUser>
            {
                new ExpenseUser()
                {
                    Email = "*****@*****.**", DisplayName = "Somu Jose"
                },
                new ExpenseUser()
                {
                    Email = "*****@*****.**", DisplayName = "Dipu"
                },
                new ExpenseUser()
                {
                    Email = "*****@*****.**", DisplayName = "Jahan"
                },
                new ExpenseUser()
                {
                    Email = "*****@*****.**", DisplayName = "Jinoy"
                }
            };

            context.ExpenseUsers.AddRange(userList);
            context.SaveChanges();
            var groupId = context.ExpenseGroups.FirstOrDefault().Id;
            var user1Id = context.ExpenseUsers.FirstOrDefault(x => x.Email == "*****@*****.**").Id;
            var user2Id = context.ExpenseUsers.FirstOrDefault(x => x.Email == "*****@*****.**").Id;
            var user3Id = context.ExpenseUsers.FirstOrDefault(x => x.Email == "*****@*****.**").Id;
            var user4Id = context.ExpenseUsers.FirstOrDefault(x => x.Email == "*****@*****.**").Id;


            var expenseItems = new List <ExpenseItem>
            {
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 120, UserId = user1Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 46, UserId = user1Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 80, UserId = user2Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 55, UserId = user3Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 110, UserId = user3Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 66, UserId = user3Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 60, UserId = user4Id
                },
                new ExpenseItem()
                {
                    ExpenseGroupId = groupId, Amount = 35, UserId = user4Id
                }
            };

            context.ExpenseItems.AddRange(expenseItems);
            context.SaveChanges();
        }
コード例 #30
0
 public void Remove(ExpenseGroup expenseGroup)
 {
     this.context.ExpenseGroups.Remove(expenseGroup);
 }