public DataMessage GetCommissions(GetCommissionInputs model)
        {
            dynamic response;

            int year  = DateTime.UtcNow.Year;
            int month = DateTime.UtcNow.Month;

            try
            {
                year  = Convert.ToInt32(model.year);
                month = Convert.ToInt32(model.month);
            }
            catch (Exception)
            {
                throw;
            }

            DateTime minDate = new DateTime(year, month, 1);
            DateTime maxDate = new DateTime(year, month, DateTime.DaysInMonth(year, month));

            DataMessage message;

            try
            {
                using (var imisContext = new ImisDB())
                {
                    var res = (from PR in imisContext.TblPremium
                               join P in imisContext.TblPolicy.Where(p => p.ValidityTo == null) on PR.PolicyId equals P.PolicyId
                               join R in imisContext.TblReporting on PR.ReportingCommissionID equals R.ReportingId
                               join O in imisContext.TblOfficer on P.OfficerId equals O.OfficerId
                               where (PR.ReportingCommissionID == null &&
                                      (PR.PayDate >= minDate && PR.PayDate <= maxDate) &&
                                      PR.ValidityTo == null &&
                                      O.Code == model.enrolment_officer_code)
                               select new
                    {
                        Commission = (R.CammissionRate == null ? 0.00M : R.CammissionRate) * PR.Amount,
                        PR.Amount
                    })
                              .ToList();

                    var c = res.Count > 0 ? res.Sum(x => x.Commission) : null;
                    var a = res.Count > 0 ? res.Sum(x => (decimal?)x.Amount) : null;

                    response = new List <dynamic>()
                    {
                        new { Commission = c, Amount = a }
                    };

                    message = new GetCommissionResponse(0, false, response, 0).Message;
                }
            }
            catch (Exception e)
            {
                message = new GetCommissionResponse(e).Message;
            }

            return(message);
        }
Пример #2
0
        public IActionResult Get_CommissionsChf([FromBody] ChfGetCommissionInputs model)
        {
            if (!ModelState.IsValid)
            {
                var error = ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage;
                return(BadRequest(new { success = false, message = error }));
            }

            USSDGetCommissionInputs commision = new USSDGetCommissionInputs()
            {
                enrolment_officer_code = model.officer_code,
                insurance_product_code = model.product_code,
                mode  = CommissionMode.Paid,
                year  = model.year,
                month = model.month,
                payer = model.payer
            };

            JsonResult  resp    = (JsonResult)base.Get_Commissions(commision);
            DataMessage message = (DataMessage)resp.Value;

            var commissionString = JsonConvert.SerializeObject(message.Data);
            var commissionAmount = JsonConvert.DeserializeObject <List <CommissionAmount> >(commissionString).FirstOrDefault();

            var response = new GetCommissionResponse(message.Code, false, 0).Message;

            Language language = Language.Secondary;

            if (model.language == 2)
            {
                language = Language.Primary;
            }

            ImisSms sms = new ImisSms(_configuration, _hostingEnvironment, language);

            var txtmsgTemplate = sms.GetMessage("CommissionInformSms");


            var txtmsg = string.Format(txtmsgTemplate,
                                       new DateTime(Convert.ToInt32(model.year), Convert.ToInt32(model.month), 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("en")),
                                       model.year,
                                       commissionAmount.Amount
                                       );


            sms.QuickSms(txtmsg, model.msisdn);

            if (!response.ErrorOccured)
            {
                return(Ok(new { success = true, message = response.MessageValue }));
            }
            else
            {
                return(BadRequest(new { success = false, message = response.MessageValue }));
            }
        }
Пример #3
0
        public DataMessage GetCommissions(USSDGetCommissionInputs model)
        {
            var sSQL = @"SELECT ISNULL(SUM(ISNULL(R.CammissionRate, 0.00) * PR.Amount),0.00) AS Commission, ISNULL(SUM(ISNULL(PR.Amount,0.00)),0.00) AS Amount
                        FROM tblPremium AS PR INNER JOIN
                             tblPolicy AS P ON P.PolicyID = PR.PolicyID AND P.ValidityTo IS NULL INNER JOIN
                             tblReporting AS R ON R.ReportingId = PR.ReportingCommissionID INNER JOIN
                             tblOfficer O ON P.OfficerID = O.OfficerID
                        WHERE  (PR.ReportingCommissionID IS NOT NULL) AND (PR.PayDate BETWEEN @MinDate and @MaxDate) 
                                AND (PR.ValidityTo IS NULL) AND (O.Code = @EnrollmentOfficerCode)";

            int year  = DateTime.UtcNow.Year;
            int month = DateTime.UtcNow.Month;

            try
            {
                year  = Convert.ToInt32(model.year);
                month = Convert.ToInt32(model.month);
            }
            catch (Exception)
            {
                throw;
            }

            DateTime minDate = new DateTime(year, month, 1);
            DateTime maxDate = new DateTime(year, month, DateTime.DaysInMonth(year, month));

            DataHelper helper = new DataHelper(Configuration);

            SqlParameter[] sqlParameters =
            {
                new SqlParameter("@MaxDate",               maxDate),
                new SqlParameter("@MinDate",               minDate),
                new SqlParameter("@Mode",                  model.mode),
                new SqlParameter("@EnrollmentOfficerCode", (model.enrolment_officer_code != null)?model.enrolment_officer_code:(object)DBNull.Value),
                new SqlParameter("@Payer",                 (model.payer != null)? model.payer:(object)DBNull.Value),
                new SqlParameter("@ProductCode",           (model.insurance_product_code != null)? model.insurance_product_code:(object)DBNull.Value)
            };

            DataMessage message;

            try
            {
                var response = helper.GetDataTable(sSQL, sqlParameters, System.Data.CommandType.Text);
                message = new GetCommissionResponse(0, false, response, 0).Message;
            }
            catch (Exception e)
            {
                message = new GetCommissionResponse(e).Message;
            }

            return(message);
        }
Пример #4
0
        public DataMessage GetCommissions(GetCommissionInputs model)
        {
            dynamic response;

            int year  = Convert.ToInt32(model.year);
            int month = Convert.ToInt32(model.month);

            // fix - when no month is choosen - get data for every month in given year
            DateTime minDate = new DateTime(year, 1, 1);
            DateTime maxDate = new DateTime(year, 12, DateTime.DaysInMonth(year, 12));

            if (month > 0)
            {
                minDate = new DateTime(year, month, 1);
                maxDate = new DateTime(year, month, DateTime.DaysInMonth(year, month));
            }

            DataMessage message;

            using (var imisContext = new ImisDB())
            {
                var res = (from PR in imisContext.TblPremium
                           join P in imisContext.TblPolicy.Where(p => p.ValidityTo == null) on PR.PolicyId equals P.PolicyId
                           join R in imisContext.TblReporting on PR.ReportingCommissionID equals R.ReportingId
                           join O in imisContext.TblOfficer on P.OfficerId equals O.OfficerId
                           where ((PR.PayDate >= minDate && PR.PayDate <= maxDate) &&
                                  PR.ValidityTo == null &&
                                  O.Code == model.enrolment_officer_code &&
                                  R.ReportMode == (int)model.mode)
                           select new
                {
                    Commission = (R.CommissionRate == null ? 0.00M : R.CommissionRate) * PR.Amount,
                    PR.Amount
                })
                          .ToList();

                var c = res.Count > 0 ? res.Sum(x => x.Commission) : null;
                var a = res.Count > 0 ? res.Sum(x => (decimal?)x.Amount) : null;

                response = new List <dynamic>()
                {
                    new { Commission = c, Amount = a }
                };

                message = new GetCommissionResponse(0, false, response, 0).Message;
            }

            return(message);
        }