Ejemplo n.º 1
0
        public HttpResponseMessage Create_M(RequestServiceContractPerHour contract)
        {
            var result = Manager.CreateNewContract(contract);

            return(OkResponse <ReturnData>(new ReturnData()
            {
                State = true, Data = new { contract = result }
            }));
        }
        public HttpResponseMessage CreateNewContract(RequestServiceContractPerHour contract)
        {
            ServiceContractPerHourManager manager = new ServiceContractPerHourManager();
            Entity contractEntity  = manager.CastToCrmEntity(contract);
            Guid   newContractGuid = GlobalCode.Service.Create(contractEntity);
            Entity newEntity       = manager.GetCrmEntity(newContractGuid.ToString());

            return(OkResponse(contract));
        }
        public RequestServiceContractPerHour CreateNewContract(RequestServiceContractPerHour contract)
        {
            var contractEntity = CastToCrmEntity(contract);

            //MIB for making Status waiting paid
            contractEntity["statuscode"] = new OptionSetValue(100000006);

            contractEntity["new_contractconfirm"] = true;
            Guid contractId = GlobalCode.Service.Create(contractEntity);


            contract.ContractId = contractId.ToString();
            Entity CreatedContract = GetCrmEntity(contractId.ToString());

            contract.ContractNum = CreatedContract["new_contractnumber"].ToString();
            contract.FinalPrice  = CreatedContract["new_finalprice"].ToString();
            #region MIB //to be changed this for making online payment URL
            try
            {
                Entity Contractupdate = GlobalCode.Service.Retrieve("new_hindvcontract", contractId, new ColumnSet(false));
                //Contractupdate["new_onlinepaymenturl"] = "https://abdal.sa/ar/Payment/DalalShopperResult/" + contractId.ToString();

                Contractupdate["new_onlinepaymenturl"] = String.Format("{0}/{1}/{2}/{3}", ConfigurationManager.AppSettings["OnlineAbdalPortalUrl"],
                                                                       GeneralAppSettings.RequestLang, ConfigurationManager.AppSettings["OnlineUserDalalPaymentUrl"], contractId.ToString());

                GlobalCode.Service.Update(Contractupdate);
            }
            catch (Exception)
            {
            }
            #endregion



            return(contract);


            //            if (!string.IsNullOrEmpty(contractId.ToString()))
            //            {
            //                //Send SMS To confirm

            //                try
            //                {



            //                    string contsql = @"
            //            select new_HIndvContract.new_ContractNumber ,Contact.FirstName from new_HIndvContract,Contact
            //             where Contact.ContactId =new_HIndvContract.new_HIndivClintname and
            //             new_HIndvContract.new_HIndvContractId='@id'";
            //                    contsql = contsql.Replace("@id", contractId.ToString());
            //                    System.Data.DataTable dtcontract = CRMAccessDB.SelectQ(contsql).Tables[0];


            //                    string Sql = @"select    MobilePhone,new_deviceid from Contact where  ContactId='@id'  ";

            //                    Sql = Sql.Replace("@id", CustomerNo);
            //                    System.Data.DataTable dt = CRMAccessDB.SelectQ(Sql).Tables[0];


            //                    //send Notification

            //                    string result = SendNotifications.SendNotify("," + CustomerNo, "عزيزى العميل /" + dtcontract.Rows[0]["FirstName"].ToString() + "   " + "شكرا لاختياركم شركة ناس سيتم التواصل معكم قريبا لتاكيد الموعد للعقد رقم " + dtcontract.Rows[0]["new_ContractNumber"].ToString());

            //                    string body = "عزيزى العميل /" + dtcontract.Rows[0]["FirstName"].ToString() + "   " + "شكرا لاختياركم شركة ناس سيتم التواصل معكم قريبا لتاكيد الموعد للعقد رقم " + dtcontract.Rows[0]["new_ContractNumber"].ToString();
            //                    AppleNotifications.SendPushNotification(dt.Rows[0]["new_deviceid"].ToString(), body, "شركة ناس للاستقدام");


            //                    //Send To SMS

            //                    /*  Entity SMS = new Entity("new_smsns");
            //                      string UserName = ConfigurationManager.AppSettings["SMSUserName"];
            //                      string SMSPassword = ConfigurationManager.AppSettings["SMSPassword"];
            //                      string TagName = ConfigurationManager.AppSettings["TagName"];
            //                      SMSRef.SMSServiceSoapClient sms = new SMSRef.SMSServiceSoapClient();
            //                      string MobileNumber = dt.Rows[0][0].ToString();
            //                      string Message = "https://nasmanpower.com/HourlyServiceContract/Maps.aspx?id=" + contractId + "  برجاء تاكيد الموقع باستخدام الرابط المرسل . شكرا لاستخدامكم شركة ناس   ";
            //                      string res = sms.SendBulkSMS(UserName, SMSPassword, TagName, MobileNumber, Message);*/
            //                }
            //                catch (Exception)
            //                {
            //                    return contractId.ToString();

            //                }



            //            }

            //return contractId.ToString();
        }
        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);
        }
Ejemplo n.º 5
0
        public HttpResponseMessage Post(RequestServiceContractPerHour contract)
        {
            var result = Manager.CreateNewContract(contract);

            return(OkResponse <RequestServiceContractPerHour>(result));
        }