public EstimateResponse EstimateFinalPrice(EstimateRequest estimateRequest)
        {
            EstimateResponse resp = new EstimateResponse();
            var customerObj       = _context.Customers.Where(x => x.Email == estimateRequest.Email).FirstOrDefault();

            if (customerObj == null)
            {
                resp.Success            = false;
                resp.FailureInformation = "User not found!";
            }
            else
            {
                resp.Success      = true;
                resp.SellingPrice = estimateRequest.GoldPrice * estimateRequest.Weight;
                if (estimateRequest.OwnerDiscount != 0.0)
                {
                    resp.Discount = (estimateRequest.OwnerDiscount / 100) * resp.SellingPrice;
                }
                else
                {
                    resp.Discount = customerObj.DiscountPercentage * resp.SellingPrice;
                }
                resp.TotalPrice         = resp.SellingPrice - resp.Discount;
                resp.FailureInformation = "No errors, estimation calculated successfully!";
            }
            return(resp);
        }
        public IActionResult CalculateFinalPrice(EstimateRequest estimateRequest)
        {
            IActionResult res      = null;
            var           response = new EstimateResponse();

            //Validation
            if (!Regex.IsMatch(estimateRequest.Email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$"))
            {
                response.Success            = false;
                response.FailureInformation = "EMail ID not in proper format!";
            }
            if (!(estimateRequest.GoldPrice > 0.0 && estimateRequest.Weight > 0.0))
            {
                response.Success            = false;
                response.FailureInformation = "GoldPrice and/or Weight should be greater than 0!";
            }
            else
            {
                response = _shoppingRepository.EstimateFinalPrice(estimateRequest);
            }
            res = Ok(response);
            return(res);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the estimates.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>EstimateResponse.</returns>
        public EstimateResponse GetEstimates(EstimateRequest request)
        {
            var response = new EstimateResponse();

            if (request.LoadOptions.Contains("Estimates"))
            {
                if (request.LoadOptions.Contains("RefType"))
                {
                    response.Estimates = EstimateDao.GetEstimatesByRefTypeId(request.RefType);
                }
                else if (request.LoadOptions.Contains("RefDate"))
                {
                    response.Estimates = EstimateDao.GetEstimatesByYearOfRefDate(request.RefType, (short)DateTime.Parse(request.RefDate).Year);
                }
                else if (request.LoadOptions.Contains("CheckPaymentEstimate"))
                {
                    response.Estimates = EstimateDao.GetEstimatesByYearOfPlaning(request.RefType, request.YearOfEstimate, request.BudgetSourceCategoryId);
                }
                else if (request.LoadOptions.Contains("CheckReceiptEstimate"))
                {
                    response.Estimates = EstimateDao.GetEstimatesByYearOfPlaning(request.RefType, request.YearOfEstimate);
                }
                else if (request.LoadOptions.Contains("CheckPaymentEstimateNoBudget"))
                {
                    response.Estimates = EstimateDao.GetEstimatesByYearOfPlaning(request.RefType, request.YearOfEstimate);
                }
                else
                {
                    response.Estimates = EstimateDao.GetEstimates();
                }
            }

            if (request.LoadOptions.Contains("Estimate"))
            {
                var estimate = EstimateDao.GetEstimate(request.RefId);
                if (request.LoadOptions.Contains("IncludeDetail"))
                {
                    estimate = estimate ?? new EstimateEntity();
                    estimate.EstimateDetails = EstimateDetailDao.GetEstimateDetailsByEstimateIncludeBudgetItemName(estimate.RefId);
                }
                if (request.LoadOptions.Contains("Option"))
                {
                    estimate = estimate ?? new EstimateEntity();
                    estimate.EstimateDetails = EstimateDetailDao.GetEstimateDetailsByEstimateOption(request.RefId, request.Option, request.BudgetSourceCategoryId, request.YearOfPlaning);
                }

                if (request.LoadOptions.Contains("PlanTemplateListId"))
                {
                    estimate = estimate ?? new EstimateEntity();

                    var estimateExchangeRate = EstimateExchangeRateDao.GetEstimateExchangeRate(request.YearOfPlaning);
                    if (estimateExchangeRate != null)
                    {
                        estimate.ExchangeRateLastYear = estimateExchangeRate.ExchangeRateLastYear;
                        estimate.ExchangeRateThisYear = estimateExchangeRate.ExchangeRateThisYear;
                    }

                    estimate.EstimateDetails = EstimateDetailDao.GetEstimateDetailsByEstimateOption((int)request.RefId);
                }

                response.Estimate = estimate;
            }
            return(response);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Sets the estimates.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>EstimateResponse.</returns>
        public EstimateResponse SetEstimates(EstimateRequest request)
        {
            var response = new EstimateResponse();

            var estimateEntity = request.Estimate;

            //var auditingLog = new AudittingLogEntity { ComponentName = "DU TOAN NGAN SACH", EventAction = (int)request.Action };
            if (request.Action != PersistType.Delete)
            {
                if (!estimateEntity.Validate())
                {
                    foreach (string error in estimateEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
            }
            try
            {
                if (request.Action == PersistType.Insert)
                {
                    using (var scope = new TransactionScope())
                    {
                        #region
                        //estimateEntity.TotalEstimateAmount = 0;
                        //estimateEntity.NextYearOfTotalEstimateAmount = 0;
                        ////calculate total estimate
                        //foreach (var estimateDetail in estimateEntity.EstimateDetails)
                        //{
                        //    if (estimateEntity.RefTypeId == 110)
                        //    {
                        //        //estimateEntity.TotalEstimateAmount += estimateDetail.YearOfEstimateAmount;
                        //        //estimateEntity.NextYearOfTotalEstimateAmount += estimateDetail.NextYearOfEstimateAmount;
                        //        var receiptVoucherDetailForTotal = (from r in estimateEntity.EstimateDetails where !r.BudgetItemCode.Contains("000100") && !r.BudgetItemCode.Contains("000101") && !r.BudgetItemCode.Contains("000107") && !r.BudgetItemCode.Contains("000115") && !r.BudgetItemCode.Contains("000120") select r).ToList();
                        //        estimateEntity.TotalEstimateAmount = receiptVoucherDetailForTotal.Select(c => c.YearOfEstimateAmount).Sum();
                        //        estimateEntity.NextYearOfTotalEstimateAmount = receiptVoucherDetailForTotal.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //    }
                        //    else
                        //    {
                        //        estimateEntity.TotalEstimateAmount += estimateDetail.YearOfEstimateAmount;
                        //        estimateEntity.NextYearOfTotalEstimateAmount += estimateDetail.TotalAmountThisYear;
                        //    }
                        //}
                        //estimateEntity.RefId = EstimateDao.InsertEstimate(estimateEntity);
                        //foreach (var receiptVoucherDetail in estimateEntity.EstimateDetails)
                        //{
                        //    if (!receiptVoucherDetail.Validate())
                        //    {
                        //        foreach (string error in receiptVoucherDetail.ValidationErrors)
                        //            response.Message += error + Environment.NewLine;
                        //        response.Acknowledge = AcknowledgeType.Failure;
                        //        return response;
                        //    }
                        //    receiptVoucherDetail.RefId = estimateEntity.RefId;
                        //    var budgetItemCode = receiptVoucherDetail.BudgetItemCode;
                        //    if (budgetItemCode == "000100")
                        //    {
                        //        var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000102") || r.BudgetItemCode.Contains("000103") || r.BudgetItemCode.Contains("000104") || r.BudgetItemCode.Contains("000105") || r.BudgetItemCode.Contains("000106") select r).ToList();
                        //        receiptVoucherDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //        receiptVoucherDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //        receiptVoucherDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //    }
                        //    if (budgetItemCode == "000101")
                        //    {
                        //        var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000102") || r.BudgetItemCode.Contains("000103") || r.BudgetItemCode.Contains("000104") select r).ToList();
                        //        receiptVoucherDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //        receiptVoucherDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //        receiptVoucherDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //    }
                        //    if (budgetItemCode == "000107")
                        //    {
                        //        var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000108") || r.BudgetItemCode.Contains("000109") || r.BudgetItemCode.Contains("000110") || r.BudgetItemCode.Contains("000111") || r.BudgetItemCode.Contains("000112") || r.BudgetItemCode.Contains("000113") || r.BudgetItemCode.Contains("000114") select r).ToList();
                        //        receiptVoucherDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //        receiptVoucherDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //        receiptVoucherDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //    }
                        //    if (budgetItemCode == "000115")
                        //    {
                        //        var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000116") || r.BudgetItemCode.Contains("000117") || r.BudgetItemCode.Contains("000118") || r.BudgetItemCode.Contains("000119") select r).ToList();
                        //        receiptVoucherDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //        receiptVoucherDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //        receiptVoucherDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //    }
                        //    EstimateDetailDao.InsertEstimateDetail(receiptVoucherDetail);
                        //}
                        //var autoNumber = AutoNumberDao.GetAutoNumberByRefType(estimateEntity.RefTypeId);
                        //autoNumber.Value += 1;
                        //response.Message = AutoNumberDao.UpdateAutoNumber(autoNumber);
                        //if (response.Message != null)
                        //{
                        //    response.Acknowledge = AcknowledgeType.Failure;
                        //    scope.Dispose();
                        //    return response;
                        //}
                        ////insert log
                        ////auditingLog.Reference = "Thêm mới CT dự toán " + estimateEntity.RefNo;
                        ////auditingLog.Amount = estimateEntity.TotalEstimateAmount;
                        ////AudittingLogDao.InsertAudittingLog(auditingLog);
                        #endregion

                        if (estimateEntity != null)
                        {
                            estimateEntity.RefId = EstimateDao.InsertEstimate(estimateEntity);

                            if (estimateEntity.RefId == 0)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                scope.Dispose();
                                return(response);
                            }

                            if (estimateEntity.EstimateDetails != null && estimateEntity.EstimateDetails.Count > 0)
                            {
                                foreach (var item in estimateEntity.EstimateDetails)
                                {
                                    if (!item.Validate())
                                    {
                                        foreach (string error in item.ValidationErrors)
                                        {
                                            response.Message += error + Environment.NewLine;
                                        }
                                        response.Acknowledge = AcknowledgeType.Failure;
                                        return(response);
                                    }
                                    item.RefId = estimateEntity.RefId;
                                    EstimateDetailDao.InsertEstimateDetail(item);
                                }
                            }
                        }

                        response.RefId = estimateEntity.RefId;

                        var autoNumber = AutoNumberDao.GetAutoNumberByRefType(estimateEntity.RefTypeId);
                        autoNumber.Value += 1;
                        response.Message  = AutoNumberDao.UpdateAutoNumber(autoNumber);
                        if (response.Message != null)
                        {
                            response.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(response);
                        }

                        scope.Complete();
                    }
                }
                else if (request.Action == PersistType.Update)
                {
                    using (var scope = new TransactionScope())
                    {
                        #region
                        //estimateEntity.TotalEstimateAmount = 0;
                        //estimateEntity.NextYearOfTotalEstimateAmount = 0;
                        //// estimateEntity. = 0;
                        //foreach (var estimateDetail in estimateEntity.EstimateDetails)
                        //{
                        //    //estimateEntity.TotalEstimateAmount += estimateDetail.YearOfEstimateAmount;
                        //    //estimateEntity.NextYearOfTotalEstimateAmount += estimateDetail.NextYearOfEstimateAmount;
                        //    if (estimateEntity.RefTypeId == 110)
                        //    {
                        //        if (estimateDetail.BudgetItemCode.Contains("000100"))
                        //        {
                        //            var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000102") || r.BudgetItemCode.Contains("000103") || r.BudgetItemCode.Contains("000104") || r.BudgetItemCode.Contains("000105") || r.BudgetItemCode.Contains("000106") select r).ToList();
                        //            estimateDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //            estimateDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //            estimateDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //        }
                        //        if (estimateDetail.BudgetItemCode.Contains("000101"))
                        //        {
                        //            var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000102") || r.BudgetItemCode.Contains("000103") || r.BudgetItemCode.Contains("000104") select r).ToList();
                        //            estimateDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //            estimateDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //            estimateDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //        }
                        //        if (estimateDetail.BudgetItemCode.Contains("000107"))
                        //        {
                        //            var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000108") || r.BudgetItemCode.Contains("000109") || r.BudgetItemCode.Contains("000110") || r.BudgetItemCode.Contains("000111") || r.BudgetItemCode.Contains("000112") || r.BudgetItemCode.Contains("000113") || r.BudgetItemCode.Contains("000114") select r).ToList();
                        //            estimateDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //            estimateDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //            estimateDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //        }
                        //        if (estimateDetail.BudgetItemCode.Contains("000115"))
                        //        {
                        //            var receiptVoucherDetailPartI = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000116") || r.BudgetItemCode.Contains("000117") || r.BudgetItemCode.Contains("000118") || r.BudgetItemCode.Contains("000119") select r).ToList();
                        //            estimateDetail.TotalEstimateAmountUSD = receiptVoucherDetailPartI.Select(c => c.TotalEstimateAmountUSD).Sum();
                        //            estimateDetail.YearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.YearOfEstimateAmount).Sum();
                        //            estimateDetail.NextYearOfEstimateAmount = receiptVoucherDetailPartI.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //        }
                        //        var receiptVoucherDetailForTotal = (from r in estimateEntity.EstimateDetails where r.BudgetItemCode.Contains("000100") || r.BudgetItemCode.Contains("000107") || r.BudgetItemCode.Contains("000115") select r).ToList();
                        //        estimateEntity.TotalEstimateAmount = receiptVoucherDetailForTotal.Select(c => c.YearOfEstimateAmount).Sum();
                        //        estimateEntity.NextYearOfTotalEstimateAmount = receiptVoucherDetailForTotal.Select(c => c.NextYearOfEstimateAmount).Sum();
                        //    }
                        //    else
                        //    {
                        //        estimateEntity.TotalEstimateAmount += estimateDetail.YearOfEstimateAmount;
                        //        estimateEntity.NextYearOfTotalEstimateAmount += estimateDetail.TotalAmountThisYear;
                        //    }
                        //}

                        //response.Message = EstimateDao.UpdateEstimate(estimateEntity);
                        //if (response.Message != null)
                        //{
                        //    response.Acknowledge = AcknowledgeType.Failure;
                        //    scope.Dispose();
                        //    return response;
                        //}

                        //foreach (var estimateDetail in estimateEntity.EstimateDetails)
                        //{
                        //    if (!estimateDetail.Validate())
                        //    {
                        //        foreach (string error in estimateDetail.ValidationErrors)
                        //            response.Message += error + Environment.NewLine;
                        //        response.Acknowledge = AcknowledgeType.Failure;
                        //        return response;
                        //    }
                        //    estimateDetail.RefId = estimateEntity.RefId;

                        //    if (estimateDetail.IsInserted)
                        //    {
                        //        EstimateDetailDao.InsertEstimateDetail(estimateDetail);
                        //    }
                        //    else
                        //    {
                        //        response.Message = EstimateDetailDao.UpdateEstimateDetail(estimateDetail);
                        //    }


                        //    if (response.Message != null)
                        //    {
                        //        response.Acknowledge = AcknowledgeType.Failure;
                        //        scope.Dispose();
                        //        return response;
                        //    }
                        //}
                        #endregion

                        response.Message = EstimateDao.UpdateEstimate(estimateEntity);
                        if (response.Message != null)
                        {
                            response.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(response);
                        }

                        response.Message = EstimateDetailDao.DeleteEstimateDetailByRefId(estimateEntity.RefId);
                        if (response.Message != null)
                        {
                            response.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(response);
                        }

                        foreach (var estimateDetail in estimateEntity.EstimateDetails)
                        {
                            if (!estimateDetail.Validate())
                            {
                                foreach (string error in estimateDetail.ValidationErrors)
                                {
                                    response.Message += error + Environment.NewLine;
                                }
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }

                            estimateDetail.RefId = estimateEntity.RefId;
                            EstimateDetailDao.InsertEstimateDetail(estimateDetail);
                        }

                        scope.Complete();
                    }
                }
                else
                {
                    using (var scope = new TransactionScope())
                    {
                        var estimaterEntityForDelete = EstimateDao.GetEstimate(request.RefId);
                        response.Message = EstimateDao.DeleteEstimate(estimaterEntityForDelete);
                        if (response.Message != null)
                        {
                            response.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(response);
                        }

                        scope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                response.Acknowledge = AcknowledgeType.Failure;
                response.Message     = ex.Message;
                return(response);
            }

            response.RefId       = estimateEntity != null ? estimateEntity.RefId : 0;
            response.Acknowledge = response.Message != null ? AcknowledgeType.Failure : AcknowledgeType.Success;
            return(response);
        }