Beispiel #1
0
        public static void updateProccesses(Queue <int> proccessIds)
        {
            var       i   = 0;
            Stopwatch stw = new Stopwatch();

            while (proccessIds.Count > 0)
            {
                var proccessId = proccessIds.Dequeue();
                //Proccess yeniden oluşturulduğunda personel üzerindeki engeller kaldırılıyor (Ali AKAY) 01.11.2016
                int  x;
                bool b;
                WebApiConfig.K_PersonelForProccess.TryRemove(proccessId, out x);
                if (WebApiConfig.AdslPersonels.ContainsKey(x))
                {
                    WebApiConfig.AdslPersonels[x].T_153_155.TryRemove(proccessId, out b);
                }

                var subTasks = new Queue <int>();
                subTasks.Enqueue(proccessId);
                while (subTasks.Count > 0)
                {
                    stw.Start();
                    i++;
                    var taskId = subTasks.Dequeue();
                    //if (WebApiConfig.AdslTaskQueues.ContainsKey(taskId) && WebApiConfig.AdslProccessIndexes.ContainsKey(taskId) && WebApiConfig.AdslProccesses.ContainsKey(WebApiConfig.AdslProccessIndexes[taskId]))
                    KocAdslProccess kap = null;
                    adsl_taskqueue  atq = null;
                    // AdslProccessIndexes dictionary nesnesi atrık kullanılmıyor (Hüseyin KOZ) 01.11.2016
                    //int proccessID = 0;
                    //if (WebApiConfig.AdslProccessIndexes.TryGetValue(taskId, out proccessID))
                    if (WebApiConfig.AdslTaskQueues.TryGetValue(taskId, out atq))
                    {
                        if (WebApiConfig.AdslProccesses.TryGetValue(atq.relatedtaskorderid ?? taskId, out kap))
                        {
                            kap.Update(atq);
                        }
                    }
                    //foreach (var item in WebApiConfig.AdslTaskQueues.Where(r => r.Value.previoustaskorderid == taskId).OrderBy(r => r.Value.taskorderno)) subTasks.Enqueue(item.Value.taskorderno);
                    HashSet <int> stks = new HashSet <int>();
                    if (WebApiConfig.AdslSubTasks.TryGetValue(taskId, out stks))
                    {
                        foreach (var item in stks)
                        {
                            subTasks.Enqueue(item);
                        }
                    }
                    stw.Stop();
                    var ttt = stw.Elapsed;
                    var btt = stw.ElapsedMilliseconds / (i);
                }
            }
        }
Beispiel #2
0
        public void Update(adsl_taskqueue tq)
        {
            var        taskType        = WebApiConfig.AdslTasks[tq.taskid].tasktype;
            int        stataType       = tq.status.HasValue ? WebApiConfig.AdslStatus.ContainsKey(tq.status.Value) ? WebApiConfig.AdslStatus[tq.status.Value].statetype.Value : 0 : 0;
            List <int> containLastTask = new List <int> {
                7, 10
            };                                                   // task type ana hiyerarşi içinde diğilse ve task sl içermiyorsa last task atanması için (Hüseyin KOZ)

            // Model Güncelleme Talebi taskları ve kurulum taskları için
            if (taskType == 3)
            {
                if (tq.taskid == 153 || tq.taskid == 155)
                {
                    if (WebApiConfig.AdslPersonels.ContainsKey(tq.attachedpersonelid ?? 0))
                    {
                        if (stataType == 1 || stataType == 3)
                        {
                            WebApiConfig.AdslPersonels[tq.attachedpersonelid.Value].T_153_155.TryAdd(tq.relatedtaskorderid ?? tq.taskorderno, true);
                            WebApiConfig.K_PersonelForProccess.TryAdd(tq.relatedtaskorderid ?? tq.taskorderno, tq.attachedpersonelid.Value);
                        }
                    }
                }
                else
                {
                    if (WebApiConfig.AdslPersonels.ContainsKey(tq.attachedpersonelid ?? 0))
                    {
                        bool b;
                        int  x;
                        if (stataType == 1 || stataType == 2 || stataType == 3) // task iptale çekilince de işlem bitirilmeli iptal ekledim (Hüseyin KOZ) 02.11.2016
                        {
                            WebApiConfig.AdslPersonels[tq.attachedpersonelid.Value].T_153_155.TryRemove(tq.relatedtaskorderid ?? tq.taskorderno, out b);
                            WebApiConfig.K_PersonelForProccess.TryRemove(tq.relatedtaskorderid ?? tq.taskorderno, out x);
                        }
                    }
                }
            }

            //Başlangıç Taskı ise
            if (WebApiConfig.AdslTaskTypes[taskType].startsProccess)
            {
                Last_Status = stataType == 1 ? 0 : stataType;
                Last_TON    = tq.taskorderno;
                S_TON       = tq.taskorderno;
                Kr_TON      = null;
                K_TON       = null;
                Ktk_TON     = null;
            }
            //Randevu Taskı ise
            else if (taskType == 2)
            {
                Last_Status = stataType == 1 ? 0 : stataType;
                Last_TON    = tq.taskorderno;
                Kr_TON      = tq.taskorderno;
                K_TON       = null;
                Ktk_TON     = null;
            }
            //Kurulum ve Rand.suz Kurulum Taskı ise
            else if (taskType == 3 || taskType == 4)
            {
                Last_Status = stataType == 1 ? 0 : stataType;
                Last_TON    = tq.taskorderno;
                K_TON       = tq.taskorderno;
                Ktk_TON     = null;
            }
            //SOL Kapama Taskı ise
            if (WebApiConfig.AdslTaskTypes[taskType].endsProccess)
            {
                Last_Status = stataType;
                Last_TON    = tq.taskorderno;
                Ktk_TON     = tq.taskorderno;
            }

            if (WebApiConfig.AdslTaskSl.ContainsKey(tq.taskid) || containLastTask.Contains(taskType))
            {
                Last_Status = stataType;
                Last_TON    = tq.taskorderno;
            }
            if (proccessCancelled)
            {
                return;
            }
            // Task SL taskı mı ?
            if (WebApiConfig.AdslTaskSl.ContainsKey(tq.taskid))
            {
                //Bayi SL Başlangıç
                if (tq.attachmentdate.HasValue)
                {
                    foreach (var sl in WebApiConfig.AdslTaskSl[tq.taskid][0])
                    {
                        if (!SLs.ContainsKey(sl))
                        {
                            SLs[sl] = new SLTime();
                        }
                        if (!SLs[sl].BStart.HasValue)
                        {
                            SLs[sl].BStart     = tq.attachmentdate;
                            SLs[sl].BayiID     = tq.attachedpersonelid;
                            SLs[sl].CustomerId = tq.attachedobjectid.Value;
                        }
                    }
                }
                //Koç SL Başlangıç
                if (tq.appointmentdate.HasValue || tq.consummationdate.HasValue)
                {
                    foreach (var sl in WebApiConfig.AdslTaskSl[tq.taskid][2])
                    {
                        if (!SLs.ContainsKey(sl))
                        {
                            SLs[sl] = new SLTime();
                        }
                        if (!SLs[sl].KStart.HasValue)
                        {
                            SLs[sl].KStart = tq.appointmentdate ?? tq.consummationdate;
                        }
                        SLs[sl].CustomerId = tq.attachedobjectid.Value;
                    }
                }
                //Bayi SL Bitiş (9156 iptal onayı bekliyor durumu sl sonlandırmamalı geçici olarak id ekledim çözüm sorulacak)
                if (tq.consummationdate.HasValue && tq.status != null && WebApiConfig.AdslStatus.ContainsKey(tq.status.Value) && (WebApiConfig.AdslStatus[tq.status.Value].statetype.Value != 2 || WebApiConfig.AdslTaskSl[tq.taskid][1].Contains(7)) && tq.status != 9156)
                {
                    foreach (var sl in WebApiConfig.AdslTaskSl[tq.taskid][1])
                    {
                        //if (!SLs.ContainsKey(sl)) SLs[sl] = new SLTime();
                        if (WebApiConfig.AdslStatus[tq.status.Value].statetype.Value == 2 && (sl != 7 || (tq.attachmentdate < DateTime.ParseExact("2017-03-10", "yyyy-MM-dd", CultureInfo.InvariantCulture))))
                        {
                            continue; // sl türü 7: Evrak SL => 10.03.2017'den sonraki iptal'ler de sl'e etki edecek
                        }
                        if (SLs.ContainsKey(sl) && !SLs[sl].BEnd.HasValue)
                        {
                            SLs[sl].BEnd = tq.consummationdate;
                        }
                    }
                    //Koç SL Bitiş
                    foreach (var sl in WebApiConfig.AdslTaskSl[tq.taskid][3])
                    {
                        //if (!SLs.ContainsKey(sl)) SLs[sl] = new SLTime();
                        if (WebApiConfig.AdslStatus[tq.status.Value].statetype.Value == 2 && (sl != 7 || tq.attachmentdate < DateTime.ParseExact("2017-03-10", "yyyy-MM-dd", CultureInfo.InvariantCulture)))
                        {
                            continue; // sl türü 7: Evrak SL => 10.03.2017'den sonraki iptal'ler de sl'e etki edecek
                        }
                        if (SLs.ContainsKey(sl) && !SLs[sl].KEnd.HasValue)
                        {
                            SLs[sl].KEnd = tq.consummationdate;
                        }
                    }
                }
            }
        }
        public HttpResponseMessage Infos(InfoRequest info)
        {
            if (info == null)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new { code = 1, message = "Eksik Bilgi." }, "application/json"));
            }
            var mail = HttpContext.Current.Request.Headers[userHeader];
            var pass = HttpContext.Current.Request.Headers[passHeader];

            using (var db = new KOCSAMADLSEntities())
            {
                var user = db.personel.Where(r => r.email == mail && r.password == pass).FirstOrDefault();
                if (user == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new { code = 1, message = "Personel Bilgileri Hatalıdır." }, "application/json"));
                }

                info.gsm     = isgsm(info.gsm);
                info.tc      = clean(info.tc);
                info.telefon = clean(info.telefon);
                if (string.IsNullOrEmpty(info.tc) || string.IsNullOrEmpty(info.gsm) || string.IsNullOrEmpty(info.adsoyad) || string.IsNullOrEmpty(info.adres) || string.IsNullOrEmpty(info.fault) || info.il == null || info.ilce == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new { code = 1, message = "Eksik Bilgi." }, "application/json"));
                }

                // TC Kimlik tekil durum kaldırıldığında değişecek
                var tckimlik = info.tc;
                while (true)
                {
                    if (checktc(tckimlik))
                    {
                        break;
                    }
                    else
                    {
                        tckimlik = tckimlik.Substring(0, tckimlik.Length - 5) + (Convert.ToInt32(tckimlik.Substring(tckimlik.Length - 2, 2)) + 1);
                    }
                }
                if (tckimlik != info.tc)
                {
                    info.adres = "TC : " + info.tc + " " + info.adres;
                    info.tc    = tckimlik;
                }

                var customer = new customer
                {
                    customername    = info.adsoyad.ToUpper(),
                    tc              = info.tc,
                    gsm             = info.gsm,
                    phone           = info.telefon,
                    ilKimlikNo      = info.il,
                    ilceKimlikNo    = info.ilce,
                    bucakKimlikNo   = info.bucak,
                    mahalleKimlikNo = info.mahalle,
                    yolKimlikNo     = 61,
                    binaKimlikNo    = 61,
                    daire           = 61,
                    updatedby       = user.personelid,
                    description     = info.adres,
                    lastupdated     = DateTime.Now,
                    creationdate    = DateTime.Now,
                    deleted         = false,
                    email           = info.email,
                };
                db.customer.Add(customer);
                db.SaveChanges();

                var taskqueue = new adsl_taskqueue
                {
                    appointmentdate    = DateTime.Now,
                    attachedobjectid   = customer.customerid,
                    attachedpersonelid = user.personelid,
                    attachmentdate     = DateTime.Now,
                    creationdate       = DateTime.Now,
                    deleted            = false,
                    description        = info.taskdetay,
                    lastupdated        = DateTime.Now,
                    status             = null,
                    taskid             = 1219, // Akıllı Nokta Data bilgilendirme Taskı
                    updatedby          = user.personelid,
                    fault = info.fault
                };
                db.taskqueue.Add(taskqueue);
                db.SaveChanges();
                taskqueue.relatedtaskorderid = taskqueue.taskorderno; // başlangıç tasklarının relatedtaskorderid kendi taskorderno tutacak (Hüseyin KOZ) 13.10.2016
                db.SaveChanges();
            }

            return(Request.CreateResponse(HttpStatusCode.OK, new { code = 0, message = "OK" }, "application/json"));
        }
        public HttpResponseMessage saveSalesTask(DTOcustomer request)
        {
            if (!control(Request)) // client ip controlü
            {
                return(Request.CreateResponse(HttpStatusCode.OK, false, "application/json"));
            }

            int[] ils     = { 4, 5, 8, 19, 24, 25, 28, 29, 36, 52, 53, 55, 57, 60, 61, 69, 75, 76 }; // Bölge içi iller kaydedilecek taskid'si bölge içi veya dışı olarak seçim yapılacak
            bool  inCheck = false;                                                                   // Bölge içinde olan müşteri kontrolü

            foreach (int il in ils)
            {
                if (request.ilKimlikNo == il)
                {
                    inCheck = true;
                    break;
                }
            }
            if (!inCheck)
            {                              // Bölge içi gibi gelen taskı aynı türden bölge dışına çevir (Çağrı Satış Yalın -> Çağrı Satış Yalın Dış vb.)
                if (request.taskid == 122) // churn iç churn dış
                {
                    request.taskid = 121;
                }
                else if (request.taskid == 119)
                {
                    request.taskid = 120;
                }
                else if (request.taskid == 131)
                {
                    request.taskid = 133;
                }
            }

            using (var db = new KOCSAMADLSEntities())
                using (var transaction = db.Database.BeginTransaction())
                    try
                    {
                        var person = db.personel.FirstOrDefault(r => r.personelid == request.salespersonel);
                        if (person == null)
                        {
                            request.salespersonel = 1458; // Eğer gönderilen personel database'de yoksa ÇAĞRI MERKEZİ (KOÇ İLETİŞİM) satış yapsın
                        }
                        if (request.customerid == 0)
                        {
                            var oldCust = db.customer.Where(c => c.tc == request.tc && c.deleted == false).ToList();
                            if (oldCust.Count == 0)
                            {
                                var customer = new customer
                                {
                                    customername      = request.customername.ToUpper(),
                                    tc                = request.tc,
                                    gsm               = request.gsm,
                                    phone             = request.phone,
                                    ilKimlikNo        = request.ilKimlikNo,
                                    ilceKimlikNo      = request.ilceKimlikNo,
                                    bucakKimlikNo     = request.bucakKimlikNo,
                                    mahalleKimlikNo   = request.mahalleKimlikNo,
                                    yolKimlikNo       = 61,
                                    binaKimlikNo      = 61,
                                    daire             = 61,
                                    updatedby         = request.salespersonel ?? 1458, // ÇAĞRI MERKEZİ (KOÇ İLETİŞİM)
                                    description       = request.description,
                                    lastupdated       = DateTime.Now,
                                    creationdate      = DateTime.Now,
                                    deleted           = false,
                                    email             = request.email,
                                    superonlineCustNo = request.superonlineCustNo,
                                };
                                db.customer.Add(customer);
                                db.SaveChanges();

                                request.customerid = customer.customerid;
                            }
                            else
                            {
                                return(Request.CreateResponse(HttpStatusCode.OK, "Girilen TC Numarası Başkasına Aittir", "application/json"));
                            }
                        }

                        var taskqueue = new adsl_taskqueue
                        {
                            appointmentdate    = DateTime.Now,
                            attachedobjectid   = request.customerid,
                            attachedpersonelid = request.salespersonel ?? 1458, // yoksa ÇAĞRI MERKEZİ (KOÇ İLETİŞİM)'a ata
                            attachmentdate     = DateTime.Now,
                            creationdate       = DateTime.Now,
                            deleted            = false,
                            description        = request.taskdescription,
                            lastupdated        = DateTime.Now,
                            status             = null,
                            taskid             = request.taskid,
                            updatedby          = request.salespersonel ?? 1458,
                            fault = "Sinerji Çağrı"
                        };

                        db.taskqueue.Add(taskqueue);
                        db.SaveChanges();
                        taskqueue.relatedtaskorderid = taskqueue.taskorderno;
                        db.SaveChanges();

                        if (request.productids != null && request.productids.Length > 0)
                        {
                            foreach (var item in request.productids)
                            {
                                var customerproducst = new adsl_customerproduct
                                {
                                    taskid       = taskqueue.taskorderno,
                                    customerid   = request.customerid,
                                    productid    = item,
                                    campaignid   = request.campaignid,
                                    creationdate = DateTime.Now,
                                    lastupdated  = DateTime.Now,
                                    updatedby    = request.salespersonel ?? 1458,
                                    deleted      = false
                                };
                                db.customerproduct.Add(customerproducst);
                            }
                            db.SaveChanges();
                        }
                        transaction.Commit();
                        WebApiConfig.updateAdslData();
                        logs(request, true, "");
                        return(Request.CreateResponse(HttpStatusCode.OK, "Tamamlandı", "application/json"));
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        logs(request, false, e.Message);
                        return(Request.CreateResponse(HttpStatusCode.OK, e.Message, "application/json"));
                    }
        }