Пример #1
0
        private TSales SaveTrans(TMsg m, string agentId, string salesNo, DateTime salesDate)
        {
            TSales sales = new TSales();

            sales.SetAssignedIdTo(Guid.NewGuid().ToString());
            sales.SalesDate = salesDate;
            sales.SalesNo   = salesNo;
            if (!string.IsNullOrEmpty(agentId))
            {
                MAgent agent = _mAgentRepository.Get(agentId);
                if (agent == null)
                {
                    throw new Exception("Kode Agen salah atau tidak terdaftar");
                }
                sales.AgentId = agent;
            }
            else
            {
                throw new Exception("Kode Agen kosong.");
            }
            sales.MsgId = m;

            sales.CreatedDate = DateTime.Now;
            sales.CreatedBy   = Environment.UserName;
            sales.DataStatus  = EnumDataStatus.New.ToString();
            sales.SalesDets.Clear();
            _tSalesRepository.Save(sales);
            return(sales);
        }
Пример #2
0
        private void SaveSalesDets(TSales sales, IList <DetailMessage> listDet)
        {
            var agentComms = (from agentComm in sales.AgentId.AgentComms
                              select agentComm).ToList();
            decimal?comm = null;

            IDictionary <string, MGame> dictGame = GetDictGame();
            MGame game = null;

            foreach (DetailMessage detailMessage in listDet)
            {
                dictGame.TryGetValue(detailMessage.GameId, out game);
                if (agentComms.Count > 0)
                {
                    comm = (from agentComm in agentComms
                            where agentComm.GameId == game
                            select agentComm.CommValue).First();
                }
                if (detailMessage.IsBB)
                {
                    SaveDetsForBB(sales, detailMessage.SalesNumber, detailMessage.SalesValue, game, comm, detailMessage.SalesNumber.Length);
                }
                else
                {
                    SaveSalesDet(sales, detailMessage.SalesNumber, detailMessage.SalesValue, game, comm, null);
                }
            }
        }
Пример #3
0
        private void SaveDetsForBB(TSales sales, string detNumber, decimal detValue, MGame gameId, decimal?comm, int leng)
        {
            var result = detNumber.AllPermutations().Where(x => x.Length == leng);

            foreach (var res in result)
            {
                SaveSalesDet(sales, res, detValue, gameId, comm, string.Format("BB : {0}", detNumber));
            }
        }
Пример #4
0
        private void SaveSalesDets(TSales sales, FormCollection formCollection)
        {
            TSalesDet det = null;
            string    detNumber, gameId;
            decimal   detValue = 0;
            IDictionary <string, MGame> dictGame = GetDictGame();
            MGame game       = null;
            var   agentComms = (from agentComm in sales.AgentId.AgentComms
                                select agentComm).ToList();
            decimal?comm = null;

            for (int i = 0; i < 40; i++)
            {
                detNumber = formCollection[string.Format("txtSalesDetNumber_{0}", i)];
                if (!string.IsNullOrEmpty(detNumber))
                {
                    detValue = decimal.Parse(formCollection[string.Format("txtSalesDetValue_{0}", i)].Replace(",", ""));
                    gameId   = formCollection[string.Format("gameId_{0}", i)];
                    if (!string.IsNullOrEmpty(gameId))
                    {
                        if (gameId.Equals("D4.BB"))
                        {
                            dictGame.TryGetValue("D4", out game);
                        }
                        else if (gameId.Equals("D3.BB"))
                        {
                            dictGame.TryGetValue("D3", out game);
                        }
                        else
                        {
                            dictGame.TryGetValue(gameId, out game);
                        }
                        if (agentComms.Count > 0)
                        {
                            comm = (from agentComm in agentComms
                                    where agentComm.GameId == game
                                    select agentComm.CommValue).First();
                        }
                    }

                    //recursive and calculate for BB
                    if (gameId.Equals("D4.BB"))
                    {
                        SaveDetsForBB(sales, detNumber, detValue, game, comm, 4);
                    }
                    else if (gameId.Equals("D3.BB"))
                    {
                        SaveDetsForBB(sales, detNumber, detValue, game, comm, 3);
                    }
                    else
                    {
                        SaveSalesDet(sales, detNumber, detValue, game, comm, null);
                    }
                }
            }
        }
Пример #5
0
        public ActionResult Sales(SalesViewModel viewModel, FormCollection formCollection)
        {
            _tSalesRepository.DbContext.BeginTransaction();
            TSales sales = _tSalesRepository.Get(viewModel.SalesId);

            if (sales != null)
            {
                _tSalesRepository.Delete(sales);
            }

            sales = new TSales();
            sales.SetAssignedIdTo(Guid.NewGuid().ToString());
            sales.SalesDate = viewModel.SalesDate;
            sales.SalesNo   = viewModel.SalesNo;
            if (!string.IsNullOrEmpty(viewModel.AgentId))
            {
                sales.AgentId = _mAgentRepository.Get(viewModel.AgentId);
            }

            sales.CreatedDate = DateTime.Now;
            sales.CreatedBy   = User.Identity.Name;
            sales.DataStatus  = EnumDataStatus.New.ToString();
            sales.SalesDets.Clear();
            _tSalesRepository.Save(sales);

            SaveSalesDets(sales, formCollection);

            bool   Success = true;
            string Message = string.Empty;

            try
            {
                _tSalesRepository.DbContext.CommitTransaction();
                TempData[EnumCommonViewData.SaveState.ToString()] = EnumSaveState.Success;
                Success = true;
                Message = "Penjualan berhasil disimpan.";
            }
            catch (Exception ex)
            {
                _tSalesRepository.DbContext.RollbackTransaction();
                TempData[EnumCommonViewData.SaveState.ToString()] = EnumSaveState.Failed;
                Success = false;
                Message = ex.GetBaseException().Message;
            }

            var e = new
            {
                Success,
                Message
            };

            return(Json(e, JsonRequestBehavior.AllowGet));
        }
Пример #6
0
        private void SaveSalesDet(TSales sales, string detNumber, decimal detValue, MGame gameId, decimal?comm, string desc)
        {
            TSalesDet det = new TSalesDet(sales);

            det.SetAssignedIdTo(Guid.NewGuid().ToString());
            det.SalesDetNumber = detNumber;
            det.SalesDetValue  = detValue;
            det.GameId         = gameId;
            det.SalesDetComm   = comm;
            det.SalesDetDesc   = desc;
            det.CreatedDate    = DateTime.Now;
            det.CreatedBy      = User.Identity.Name;
            det.DataStatus     = EnumDataStatus.New.ToString();
            _tSalesDetRepository.Save(det);
        }
Пример #7
0
        private TSales SaveTrans(string agentId, string salesNo)
        {
            TSales sales = new TSales();

            sales.SetAssignedIdTo(Guid.NewGuid().ToString());
            sales.SalesDate = DateTime.Today;
            sales.SalesNo   = salesNo;
            if (!string.IsNullOrEmpty(agentId))
            {
                sales.AgentId = _mAgentRepository.Get(agentId);
            }

            sales.CreatedDate = DateTime.Now;
            sales.CreatedBy   = Environment.UserName;
            sales.DataStatus  = EnumDataStatus.New.ToString();
            sales.SalesDets.Clear();
            _tSalesRepository.Save(sales);
            return(sales);
        }
Пример #8
0
        private void SaveSalesDets(TSales sales, IList <DetailMessage> listDet)
        {
            var agentComms = (from agentComm in sales.AgentId.AgentComms
                              select agentComm).ToList();
            decimal?comm = null;

            IDictionary <string, MGame> dictGame = GetDictGame();
            MGame  game = null;
            string desc = string.Empty;

            foreach (DetailMessage detailMessage in listDet)
            {
                dictGame.TryGetValue(detailMessage.GameId, out game);
                desc = string.Empty;
                if (detailMessage.IsHBR && detailMessage.GameId.Equals(EnumGame.D4.ToString()))
                {
                    desc = string.Format("HBR : {0}", detailMessage.SalesNumber);
                }
                if (agentComms.Count > 0)
                {
                    var getComms = (from agentComm in agentComms
                                    where agentComm.GameId == game
                                    select agentComm.CommValue);
                    if (getComms.Count() > 0)
                    {
                        comm = getComms.First();
                    }
                }
                if (detailMessage.IsBB)
                {
                    SaveDetsForBB(sales, detailMessage.SalesNumber, detailMessage.SalesValue, game, comm, detailMessage.SalesNumber.Length, desc);
                }
                else
                {
                    SaveSalesDet(sales, detailMessage.SalesNumber, detailMessage.SalesValue, game, comm, desc);
                }
            }
        }
Пример #9
0
        public void SaveToTrans(TMsg m, string msg, DateTime salesDate)
        {
            //many line breaks, every handphone have different string
            string[] separator = new string[] { "\n", "\r", "\r\n", "\n\r" };
            string[] lines     = msg.Replace(" ", "").ToUpper().Split(separator, StringSplitOptions.RemoveEmptyEntries);// Regex.Split(msg.ToUpper(), "\n");
            string   agentId   = string.Empty;
            string   salesNo   = string.Empty;

            IList <DetailMessage> listDet = new List <DetailMessage>();
            DetailMessage         detMsg  = null;
            decimal factor = 1;
            bool    isHBR  = false;

            //set TH as default game
            bool isTH = true;

            //separate number with value with this string
            string[] valueseparator = new string[] { ConfigurationManager.AppSettings["ValueSeparator"] };
            string   valseparator   = ConfigurationManager.AppSettings["ValueSeparator"];

            //separate each number with this string
            string[] numseparator = new string[] { ConfigurationManager.AppSettings["NumSeparator"] };
            foreach (string line in lines)
            {
                factor = 1;
                if (line.Contains("A="))
                {
                    agentId = line.Replace("A=", "");
                }
                else if (line.Contains("KE="))
                {
                    salesNo = line.Replace("KE=", "");
                }
                //if message contain HRB string, the game is HBR
                else if (line.Contains("HBR"))
                {
                    isHBR = true;
                    isTH  = false;
                }
                ////if message contain TH string, the game is TH
                //else if (line.Contains("TH"))
                //{
                //    isTH = true;
                //}
                else
                {
                    //search game and value
                    //det[0] = number list
                    //det[1] = value and game (for BB)
                    //string[] dets = line.Split(valueseparator, StringSplitOptions.RemoveEmptyEntries); // Regex.Split(line, "=");
                    //string det = dets[0].Trim();
                    string val  = line.Substring(line.LastIndexOf(valseparator) + 1);
                    string nums = line.Substring(0, line.LastIndexOf(valseparator));
                    //check if games is BB
                    if (val.Contains("BB"))
                    {
                        decimal value = 0;
                        //replace comma with dot to identify decimal number, ex : 0,5
                        if (!decimal.TryParse(val.Replace("BB", "").Replace(",", "."), out value))
                        {
                            throw new Exception("Format angka salah!!!");
                        }

                        string[] numbers = nums.Split(numseparator, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string num in numbers)
                        {
                            detMsg = new DetailMessage();

                            if (isTH && num.Length == 4)
                            {
                                detMsg.GameId = EnumGame.D4TH.ToString();
                            }
                            else
                            {
                                detMsg.GameId = string.Format("D{0}", num.Length);
                            }
                            detMsg.SalesNumber = num;
                            detMsg.SalesValue  = value * factor;
                            detMsg.IsBB        = true;
                            detMsg.IsHBR       = false;
                            //HBR with factor = 2 is for only game D4 only
                            if (isHBR && num.Length == 4)
                            {
                                detMsg.SalesValue = value * 2;
                                detMsg.IsHBR      = true;
                            }
                            listDet.Add(detMsg);
                        }
                    }
                    //check if games is BK
                    if (val.Contains("-"))
                    {
                        //replace comma with dot to identify decimal number, ex : 0,5
                        string[] BKseparator = new string[] { "-" };
                        string[] BK          = nums.Split(BKseparator, StringSplitOptions.RemoveEmptyEntries);
                        decimal  b           = 0;
                        decimal  k           = 0;

                        if (!decimal.TryParse(BK[0], out b) || !decimal.TryParse(BK[1], out k))
                        {
                            throw new Exception("Format angka salah!!!");
                        }

                        string[] numbers = nums.Split(numseparator, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string num in numbers)
                        {
                            //besar
                            detMsg             = new DetailMessage();
                            detMsg.GameId      = EnumGame.BK_B.ToString();
                            detMsg.SalesNumber = num;
                            detMsg.SalesValue  = b * 2;
                            detMsg.IsBB        = false;
                            detMsg.IsHBR       = false;
                            listDet.Add(detMsg);

                            //kecil
                            detMsg             = new DetailMessage();
                            detMsg.GameId      = EnumGame.BK_K.ToString();
                            detMsg.SalesNumber = num;
                            detMsg.SalesValue  = k * 2;
                            detMsg.IsBB        = false;
                            detMsg.IsHBR       = false;
                            listDet.Add(detMsg);
                        }
                    }
                    //if not, just do it
                    else
                    {
                        decimal value = 0;
                        if (!decimal.TryParse(val.Replace(",", "."), out value))
                        {
                            throw new Exception("Format angka salah!!!");
                        }

                        //cannot use regex .(dot), it use for other functionality
                        // string[] numbers = Regex.Split(det, ".");

                        string[] numbers = nums.Split(numseparator, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string num in numbers)
                        {
                            detMsg = new DetailMessage();
                            //check if numbers contain x string
                            //(this for game WING)
                            if (num.Contains("X"))
                            {
                                detMsg.GameId = EnumGame.WING.ToString();
                            }
                            else if (num.Contains("MK"))
                            {
                                detMsg.GameId = EnumGame.MK.ToString();
                            }
                            else if (num.Contains("/"))
                            {
                                detMsg.GameId = EnumGame.PAKET.ToString();
                            }
                            else if (num.Contains("D"))
                            {
                                detMsg.GameId = EnumGame.D.ToString();
                            }
                            else if (num.Contains("T"))
                            {
                                detMsg.GameId = EnumGame.T.ToString();
                            }
                            else if (num.Contains("B"))
                            {
                                detMsg.GameId = EnumGame.B.ToString();
                            }
                            //if not, use regular games
                            else
                            {
                                if (isTH && num.Length == 4)
                                {
                                    detMsg.GameId = EnumGame.D4TH.ToString();
                                }
                                else
                                {
                                    detMsg.GameId = string.Format("D{0}", num.Length);
                                }
                            }
                            detMsg.SalesNumber = num;
                            detMsg.SalesValue  = value * factor;
                            detMsg.IsHBR       = false;

                            //HBR with factor = 2 is for only game D4 only
                            if (isHBR && num.Length == 4)
                            {
                                detMsg.SalesValue = value * 2;
                                detMsg.IsHBR      = true;
                            }
                            listDet.Add(detMsg);
                        }
                    }
                }
            }
            //save trans and details
            TSales sales = SaveTrans(m, agentId, salesNo, salesDate);

            SaveSalesDets(sales, listDet);
        }
Пример #10
0
        public void SaveToTrans(string msg)
        {
            //many line breaks, every handphone have different string
            string[] separator = new string[] { "\n", "\r", "\r\n", "\n\r" };
            string[] lines     = msg.ToUpper().Split(separator, StringSplitOptions.RemoveEmptyEntries);// Regex.Split(msg.ToUpper(), "\n");
            string   agentId   = string.Empty;
            string   salesNo   = string.Empty;

            IList <DetailMessage> listDet = new List <DetailMessage>();
            DetailMessage         detMsg  = null;

            foreach (string line in lines)
            {
                if (line.Contains("A="))
                {
                    agentId = line.Replace("A=", "");
                }
                else if (line.Contains("KE="))
                {
                    salesNo = line.Replace("KE=", "");
                }
                else
                {
                    //search game and value
                    //det[0] = number list
                    //det[1] = value and game (for BB)
                    string[] dets = Regex.Split(line, "=");
                    string   det  = dets[0];
                    //check if games is BB
                    if (dets[1].Contains("BB"))
                    {
                        decimal? value   = decimal.Parse(dets[1].Replace("BB", ""));
                        string[] sep     = new string[] { ".", "," };
                        string[] numbers = det.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string num in numbers)
                        {
                            detMsg             = new DetailMessage();
                            detMsg.GameId      = string.Format("D{0}", num.Length);
                            detMsg.SalesNumber = num;
                            detMsg.SalesValue  = value;
                            detMsg.IsBB        = true;
                            listDet.Add(detMsg);
                        }
                    }
                    //if not, just do it
                    else
                    {
                        decimal?value = decimal.Parse(dets[1]);
                        //cannot use regex .(dot), it use for other functionality
                        // string[] numbers = Regex.Split(det, ".");

                        string[] sep     = new string[] { ".", "," };
                        string[] numbers = det.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string num in numbers)
                        {
                            detMsg = new DetailMessage();
                            //check if numbers contain x string
                            //(this for game WING)
                            if (num.Contains("X"))
                            {
                                detMsg.GameId = EnumGame.WING.ToString();
                            }
                            //if not, use regular games
                            else
                            {
                                detMsg.GameId = string.Format("D{0}", num.Length);
                            }
                            detMsg.SalesNumber = num;
                            detMsg.SalesValue  = value;
                            listDet.Add(detMsg);
                        }
                    }
                }
            }
            //save trans and details
            TSales sales = SaveTrans(agentId, salesNo);

            SaveSalesDets(sales, listDet);
        }