public IList <GenExpenseObject> GetAllGenExpenseSheet()
        {
            try
            {
                List <GenExpenseObject> genExpenseList = new List <GenExpenseObject>();
                foreach (GenExpense source in (IEnumerable <GenExpense>)genExpenseRepo.GetAll())
                {
                    GenExpenseObject genObject = _Mapper.Map <GenExpense, GenExpenseObject>(source);
                    genExpenseList.Add(genObject);
                }

                return((IList <GenExpenseObject>)genExpenseList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public Task <bool> RemoveGenExpense(GenExpenseObject obj)
 {
     return(Task.Run(() =>
     {
         try
         {
             if (obj.Id != Guid.Empty)
             {
                 genExpenseRepo.Delete(obj.Id);
             }
             genExpenseRepo.UnitofWork.Commit();
             return true;
         }
         catch (Exception ex)
         {
             throw ex;
         }
     }));
 }
 public async Task <IActionResult> Put(GenExpenseObject obj)
 {
     try
     {
         if (obj.Id != Guid.Empty)
         {
             if (await _Logic.UpdateGenExpense(obj))
             {
                 return(Ok());
             }
             return(BadRequest());
         }
         return(BadRequest());
     }
     catch (Exception)
     {
         throw;
     }
 }
        public async Task <ActionResult <GenExpenseObject> > Delete(GenExpenseObject obj)
        {
            try
            {
                if (obj.Id != Guid.Empty)
                {
                    if (await _Logic.RemoveGenExpense(obj))
                    {
                        return(Ok());
                    }
                    return(BadRequest());
                }

                return(BadRequest());
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <ActionResult <GenExpenseObject> > Post(GenExpenseObject obj)
        {
            try
            {
                if (obj.Id == Guid.Empty)
                {
                    obj.Id = await _Logic.CreateGenExpense(obj);

                    if (obj.Id != Guid.Empty)
                    {
                        return(Ok(obj.Id));
                    }
                    return(BadRequest());
                }
                return(BadRequest());
            }
            catch (Exception)
            {
                throw;
            }
        }
        public Task <Guid> CreateGenExpense(GenExpenseObject obj)
        {
            return(Task.Run(() =>
            {
                try
                {
                    if (obj.Id == Guid.Empty)
                    {
                        var dataObj = new MapperConfiguration(doj =>
                        {
                            doj.CreateMap <GenExpenseObject, GenExpense>();
                        });

                        IMapper iMapper = dataObj.CreateMapper();

                        var source = new GenExpense();

                        source.Id = IdentityGenerator.NewSequentialGuid();
                        source.Amount = obj.Amount;
                        source.Description = obj.Description;
                        source.Purpose = obj.Purpose;
                        source.ExpenseDate = obj.ExpenseDate;

                        genExpenseRepo.Add(source);
                        genExpenseRepo.UnitofWork.Commit();

                        return source.Id;
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }));
        }
        public Task <bool> UpdateGenExpense(GenExpenseObject obj)
        {
            return(Task.Run(() =>
            {
                try
                {
                    GenExpense entity = _Mapper.Map <GenExpenseObject, GenExpense>(obj);

                    if (obj.Id != Guid.Empty)
                    {
                        genExpenseRepo.Update(entity);
                    }
                    genExpenseRepo.UnitofWork.Commit();

                    return true;
                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException(ex.Message);
                }
            }));
        }