/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public static MemberRateDataModel ToDataModel(this NormalRate model) { var t = new MemberRateDataModel() { User = model.User.ToSummaryDto(), CompanyCode = model.CompanyCode, CompanyName = model.Company?.Name, Level = model.Level, LevelName = ToLevelName(model.Level), Rank = model.Rank, Remark = model.Remark, UserId = model.UserId, RatingCycleCount = model.RatingCycleCount, RatingType = model.RatingType }; //var user = model.User; //if (user != null) //{ // var b = user.BaseInfo; // t.RealName = b.RealName; // t.Cid = b.Cid; // var c = user.CompanyInfo; // t.CompanyName = c.Company.Name; // t.Duty = c.Duties.Name; //} return(t); }
public static async Task <ParkingRateDTO> CalcNRAsync( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function CalcNormalRates processed a request."); string name = string.Empty; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); EntryExitDTO entryExitDateTime = JsonConvert.DeserializeObject <EntryExitDTO>(requestBody); ParkingRateDTO result = new ParkingRateDTO() { Name = CONSTANTS.RateType.STANDARD }; string response = await client.GetStringAsync(CONSTANTS.ProjectURLs.ReturnParkingRatesNormal); List <NormalRate> normalRates = JsonConvert.DeserializeObject <List <NormalRate> >(response); double resultNormalMacro = 0.0; double resultNormalMicro = 0.0; bool isNormal = false; double duration = (entryExitDateTime.EndDT - entryExitDateTime.StartDT).TotalHours; NormalRate maxNormalRate = normalRates.OrderBy(nr => nr.MaxHours).LastOrDefault(); if (duration >= maxNormalRate.MaxHours) { resultNormalMacro = Math.Floor(duration / maxNormalRate.MaxHours) * maxNormalRate.Rate; duration = duration % maxNormalRate.MaxHours; } if (duration > 0) { foreach (NormalRate normalRate in normalRates) { if (!isNormal && duration <= normalRate.MaxHours) { isNormal = true; resultNormalMicro = normalRate.Rate; } } } result.Price = resultNormalMacro + resultNormalMicro; return(result); }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <param name="companies"></param> /// <param name="users"></param> /// <returns></returns> public static NormalRate ToModel(this MemberRateImportDto model, IQueryable <DAL.Entities.Company> companies, IQueryable <DAL.Entities.UserInfo.User> users) { var company = companies.FirstOrDefault(i => i.Code == model.Company); var user = users.FirstOrDefault(i => i.BaseInfo.Cid == model.UserCid); var raw = new NormalRate() { Company = company, CompanyCode = company?.Code, Create = DateTime.Now, Level = (int)model.Level, Rank = model.Rank, Remark = model.Remark, User = user, UserId = user?.Id }; return(raw); }