Esempio n. 1
0
        public APIGatewayProxyResponse CalculateCompensation(LambdaRequest requeste)
        {
            var response = new APIGatewayProxyResponse();

            if (requeste == null || requeste.Body == null)
            {
                response.StatusCode = (int)HttpStatusCode.NoContent;
                response.Body       = "No compensation data provided";
            }
            else
            {
                TravelExpenses travelExpenses = JsonConvert.DeserializeObject <TravelExpenses>(requeste.Body);
                List <double>  results        = CompensationService.CalculateCompensation(travelExpenses);

                Response responseJson = new Response()
                {
                    TravelCompensation = results[0],
                    TravelExpenses     = results[1]
                };

                response.StatusCode = (int)HttpStatusCode.OK;
                response.Body       = JsonConvert.SerializeObject(responseJson);
            }

            return(response);
        }
Esempio n. 2
0
        public List <double> CalculateCompensation(TravelExpenses expenses)
        {
            double workTripsCost    = 0;
            double visitTravelsCost = 0;

            if (expenses.WorkTrips != null)
            {
                workTripsCost = TravelCosts(expenses.WorkTrips);
            }

            if (expenses.VisitingTravels != null)
            {
                visitTravelsCost = TravelCosts(expenses.VisitingTravels);
            }

            double tollsCompensation = TollCost(expenses.TollExpenses);

            double totalTravelCosts = workTripsCost + visitTravelsCost + tollsCompensation;

            double travelCompensation = totalTravelCosts >= Config.EXCESS ? totalTravelCosts - Config.EXCESS : 0;

            return(new List <double> {
                travelCompensation, totalTravelCosts
            });
        }
Esempio n. 3
0
 public int Update(TravelExpenses pObjTravelExpenses)
 {
     try
     {
         return(mObjTravelExpensesTableDAO.Update(pObjTravelExpenses));
     }
     catch (Exception lObjException)
     {
         LogService.WriteError(string.Format("[TravelExpensesService - Update]: {0}", lObjException.Message));
         throw lObjException;
     }
 }
Esempio n. 4
0
        public async Task <ITravelExpenses> GetByIdAsync(int id)
        {
            var result = default(TravelExpenses);
            var travel = await travelController.GetByIdAsync(id);

            if (travel != null)
            {
                result = new TravelExpenses();
                result.Travel.CopyProperties(travel);
                foreach (var item in await expenseController.QueryAsync(e => e.TravelId == id))
                {
                    result.ExpenseEntities.Add(item);
                }
            }
            else
            {
                throw new LogicException(ErrorType.InvalidId, "Entity can't find!");
            }
            return(result);
        }
Esempio n. 5
0
 static void Main(string[] args)
 {
     try
     {
         StringBuilder    builder        = new StringBuilder();
         TravelExpenses[] travelExpenses = new TravelExpenses[5]
         {
             new TravelExpenses {
                 Account = "Anton Slutsky", Transport = 50000, CountDays = 5
             },
             new TravelExpenses {
                 Account = "Egor Makarov", Transport = 60000, CountDays = 3
             },
             null,
             new TravelExpenses {
                 Account = "Pavel Pavlov", Transport = 100000, CountDays = 10
             },
             new TravelExpenses(),
         };
         foreach (TravelExpenses item in travelExpenses)
         {
             if (item != null)
             {
                 item.Show();
                 Console.WriteLine();
             }
         }
         travelExpenses[travelExpenses.Length - 1].Transport = 33333;
         Console.WriteLine("Duration = " + (travelExpenses[0].CountDays + travelExpenses[1].CountDays));
         foreach (TravelExpenses item in travelExpenses)
         {
             Console.WriteLine(item);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
     Console.ReadKey();
 }
Esempio n. 6
0
        public async Task <ITravelExpenses> UpdateAsync(ITravelExpenses entity)
        {
            entity.CheckArgument(nameof(entity));
            entity.Travel.CheckArgument(nameof(entity.Travel));
            entity.Expenses.CheckArgument(nameof(entity.Expenses));

            //Delete all costs that are no longer included in the list.
            foreach (var item in await expenseController.QueryAsync(e => e.TravelId == entity.Travel.Id))
            {
                var tmpExpense = entity.Expenses.SingleOrDefault(i => i.Id == item.Id);

                if (tmpExpense == null)
                {
                    await expenseController.DeleteAsync(item.Id);
                }
            }

            var result = new TravelExpenses();
            var travel = await travelController.UpdateAsync(entity.Travel);

            result.TravelEntity.CopyProperties(travel);
            foreach (var item in entity.Expenses)
            {
                if (item.Id == 0)
                {
                    item.TravelId = entity.Travel.Id;
                    var insEntity = await expenseController.InsertAsync(item);

                    item.CopyProperties(insEntity);
                }
                else
                {
                    var updEntity = await expenseController.UpdateAsync(item);

                    item.CopyProperties(updEntity);
                }
            }
            return(result);
        }
Esempio n. 7
0
        public async Task <ITravelExpenses> InsertAsync(ITravelExpenses entity)
        {
            entity.CheckArgument(nameof(entity));
            entity.Travel.CheckArgument(nameof(entity.Travel));
            entity.Expenses.CheckArgument(nameof(entity.Expenses));

            var result = new TravelExpenses();

            result.TravelEntity.CopyProperties(entity.Travel);
            await travelController.InsertAsync(result.TravelEntity);

            foreach (var item in entity.Expenses)
            {
                var expense = new Expense();

                expense.Travel = result.TravelEntity;
                expense.CopyProperties(item);
                await expenseController.InsertAsync(expense);

                result.ExpenseEntities.Add(expense);
            }
            return(result);
        }