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); }
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 }); }
public int Update(TravelExpenses pObjTravelExpenses) { try { return(mObjTravelExpensesTableDAO.Update(pObjTravelExpenses)); } catch (Exception lObjException) { LogService.WriteError(string.Format("[TravelExpensesService - Update]: {0}", lObjException.Message)); throw lObjException; } }
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); }
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(); }
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); }
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); }