public ServiceContractPerHourManager() : base(CrmEntityNamesMapping.ServiceContractPerHour, "new_hindvcontractid") { HourlyPricingManager = new HourlyPricingManager(); PromotionMgr = new PromotionManager(); }
public Entity CastToCrmEntity(RequestServiceContractPerHour contract) { Entity contractEntity = new Entity(CrmEntityName); contractEntity["new_hindivclintname"] = new EntityReference(CrmEntityNamesMapping.Contact, new Guid(contract.CustomerId.ToString())); contractEntity["new_nationality"] = new EntityReference(CrmEntityNamesMapping.Nationality, new Guid(contract.NationalityId)); contractEntity["new_houlrypricing"] = new EntityReference(CrmEntityNamesMapping.HourlyPricing, new Guid(contract.HourlyPricingId)); contractEntity["new_city"] = new EntityReference(CrmEntityNamesMapping.City, new Guid(contract.CityId)); contractEntity["new_district"] = new EntityReference(CrmEntityNamesMapping.District, new Guid(contract.DistrictId)); RequestHourlyPricing pricingObj = new RequestHourlyPricing(); pricingObj.PromotionCode = contract.PromotionCode; var promotion = PromotionMgr.GetPromotionByCode(pricingObj, UserLanguage.Arabic); contractEntity["new_promotionid"] = new EntityReference(CrmEntityNamesMapping.Promotion, new Guid(promotion.Id)); var totalVisits = contract.ContractDuration * contract.NumOfVisits; var extraVisits = (promotion.FreeVisitsFactor ?? 0) == 0 ? 0 : Math.Truncate((decimal)totalVisits / promotion.FreeVisitsFactor.Value); var totalPlusExtraVisits = totalVisits + extraVisits; contractEntity["new_contractsource"] = new OptionSetValue(contract.Who == 1 ? 1 : 2); // why? contractEntity["new_housetype"] = new OptionSetValue(contract.HouseType); contractEntity["new_floorno"] = new OptionSetValue(contract.FloorNo); contractEntity["new_partmentnumber"] = contract.PartmentNo; contractEntity["new_houseno"] = contract.HouseNo; contractEntity["new_notes"] = contract.AddressNotes; //if (contract.Who == 1) // contractEntity["new_contractsource"] = new OptionSetValue(contract.Who); //else // contractEntity["new_contractsource"] = new OptionSetValue(2); contractEntity["new_new_contractdate"] = DateTime.Now; contractEntity["new_contractconfirm"] = DefaultValues.ServiceContractPerHour_IsConfirmed; contractEntity["statuscode"] = new OptionSetValue(DefaultValues.ServiceContractPerHour_StatusCode); contract.StartDay = contract.StartDay.Replace('/', '-'); contractEntity["new_contractstartdate"] = DateTime.ParseExact(contract.StartDay, "dd-MM-yyyy", CultureInfo.InvariantCulture); contractEntity["new_customerdays"] = contract.AvailableDays; contractEntity["new_selecteddays"] = contract.AvailableDays; contractEntity["new_latitude"] = contract.Latitude; contractEntity["new_longitude"] = contract.Longitude; contractEntity["new_mapurl"] = "http://maps.google.com/maps?q=" + contract.Latitude + "," + contract.Longitude + "&z=15"; contractEntity["new_paymentcode"] = new Random().Next(0, 1000000).ToString("D6"); Entity hourlyPricing = HourlyPricingManager.GetCrmEntity(contract.HourlyPricingId); var hourlyPricingCost = HourlyPricingManager.CalculateHourlyPricingCost(hourlyPricing, contract.NumOfHours, contract.NumOfVisits, contract.ContractDuration, contract.NumOfWorkers, promotion); contractEntity["new_shift"] = bool.Parse(hourlyPricing["new_shift"].ToString()); contractEntity["new_hoursnumber"] = new OptionSetValue(contract.NumOfHours); contractEntity["new_visitcount_def"] = contract.NumOfVisits; contractEntity["new_weeklyvisits"] = new OptionSetValue(contract.NumOfVisits); contractEntity["new_contractmonth"] = new OptionSetValue(contract.ContractDuration); contractEntity["new_employeenumber"] = new OptionSetValue(contract.NumOfWorkers); contractEntity["new_visitprice_def"] = int.Parse(MathNumber.RoundDeciamlToInt(hourlyPricingCost.HourRate.ToString())) * contract.NumOfHours; contractEntity["new_visittotalprice"] = hourlyPricingCost.HourRate * contract.NumOfHours; contractEntity["new_monthvisits_def"] = contract.NumOfVisits * 4; // contractEntity["new_totalvisits_def"] = contract.NumOfVisits * contract.ContractDuration; MIB Must be int contractEntity["new_totalvisits_def"] = (int)Math.Round(totalPlusExtraVisits, 0); contractEntity["new_hindivcount"] = contract.NumOfHours; contractEntity["new_discount_def"] = hourlyPricingCost.Discount; contractEntity["new_totalprice_def"] = (int)Math.Round(hourlyPricingCost.TotalPriceAfterPromotion, 0); //decimal value string 180 = 180m as string not using parse contractEntity["new_vatrate"] = hourlyPricingCost.VatRate / 100m; contractEntity["new_vatamount"] = hourlyPricingCost.VatAmount; contractEntity["new_finalprice"] = hourlyPricingCost.TotalPriceWithVat; contractEntity["new_onevisitprice"] = hourlyPricingCost.TotalPriceWithVat / (((int)Math.Round(totalPlusExtraVisits, 0)) * contract.NumOfWorkers); return(contractEntity); }