Esempio n. 1
0
        public void ServiceRequestTags(int requestId, string tags)
        {
            var        ctx         = new SCMContext();
            var        request     = ctx.ServiceRequests.Find(requestId);
            List <int> tagList     = tags.Split(',').Select(x => Convert.ToInt32(x)).ToList();
            List <int> requestTags = request.Tags.Select(x => x.Id).ToList();
            List <int> deletedTags = requestTags.Where(x => !tagList.Contains(x)).ToList();

            if (deletedTags.Count > 0)
            {
                foreach (int i in deletedTags)
                {
                    request.Tags.Remove(ctx.Tags.Find(i));
                    requestTags.Remove(i);
                }
                ctx.SaveChanges();
            }
            tagList.RemoveAll(x => requestTags.Contains(x));
            if (tagList.Count > 0)
            {
                foreach (int id in tagList)
                {
                    request.Tags.Add(ctx.Tags.Find(id));
                }
                ctx.SaveChanges();
            }
            Utils.DataManager.ChangeRequest(requestId);
        }
Esempio n. 2
0
        public static void ChangeCustomer(int id)
        {
            Customers();
            lock (customersLock)
            {
                if (HttpContext.Current.Cache["Customers"] != null)
                {
                    var list     = (List <Customer>)HttpContext.Current.Cache["Customers"];
                    var ctx      = new SCMContext();
                    var customer = ctx.Customers.Find(id);
                    if (customer != null)
                    {
                        list.RemoveAll(x => x.Id == id);
                        list.Add(customer);

                        HttpContext.Current.Cache["Customers"] = list.OrderByDescending(x => x.Name).ToList();
                        var relatedRequests = customer.ServiceRequests.Where(x => x.StatusId < 90 || (x.StatusId >= 90 && x.ClosingDate.HasValue && x.ClosingDate.Value.Year == DateTime.Now.Year)).Select(x => x.Id).ToList();
                        if (relatedRequests.Count > 0)
                        {
                            foreach (var i in relatedRequests)
                            {
                                ChangeRequest(i);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        public static IEnumerable <ServiceRequest> Requests()
        {
            Customers();
            lock (requestsLock)
            {
                if (HttpContext.Current.Cache["Requests"] == null)
                {
                    var ctx = new SCMContext();

                    var qry = (from x in ctx.ServiceRequests.Include(x => x.Customer).Include(x => x.Product).Include(x => x.Engineer).Include(x => x.PendingReason).Include(x => x.CancelReason).Include(x => x.Tags).Include(x => x.Customer.Tags)
                               where (x.StatusId < 90 && !x.IsDeleted) ||
                               (x.StatusId >= 90 && x.ClosingDate.HasValue && x.ClosingDate.Value.Year == DateTime.Today.Year && !x.IsDeleted)
                               orderby x.UpdatedOn descending
                               select x);


                    //HttpContext.Current.Cache["Requests"] = qry.ToList();
                    HttpContext.Current.Cache.Insert("Requests",
                                                     qry.ToList(), null,
                                                     System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 15, 0));
                }
            }

            return((IEnumerable <ServiceRequest>)HttpContext.Current.Cache["Requests"]);
        }
Esempio n. 4
0
        public void CustomerTags(int customerId, string tags)
        {
            var        ctx          = new SCMContext();
            var        customer     = ctx.Customers.Find(customerId);
            List <int> tagList      = tags.Split(',').Select(x => Convert.ToInt32(x)).ToList();
            List <int> customerTags = customer.Tags.Select(x => x.Id).ToList();
            List <int> deletedTags  = customerTags.Where(x => !tagList.Contains(x)).ToList();

            if (deletedTags.Count > 0)
            {
                foreach (int i in deletedTags)
                {
                    customer.Tags.Remove(ctx.Tags.Find(i));
                    customerTags.Remove(i);
                }
                ctx.SaveChanges();
            }
            tagList.RemoveAll(x => customerTags.Contains(x));
            if (tagList.Count > 0)
            {
                foreach (int id in tagList)
                {
                    customer.Tags.Add(ctx.Tags.Find(id));
                }
                ctx.SaveChanges();
            }
            Utils.DataManager.ChangeCustomer(customerId);
        }
Esempio n. 5
0
        public ActionResult RequestsDepartmentModifier([Bind(Include = "DepartmentId1,DepartmentId2")] RequestsDepartmentModifier model)
        {
            if (ModelState.IsValid)
            {
                SCMContext ctx         = new SCMContext();
                var        department1 = ctx.Departments.Find(model.DepartmentId1);
                var        department2 = ctx.Departments.Find(model.DepartmentId2);

                var engineers = department1.Engineers.ToList();
                foreach (var e in engineers)
                {
                    e.DepartmentId = department2.Id;
                }

                var requests = department1.ServiceRequests.ToList();
                foreach (var r in requests)
                {
                    r.DepartmentId = department2.Id;
                }

                ctx.SaveChanges();
                Utils.DataManager.ResetDepartments();
                Utils.DataManager.ResetEngineers();
                Utils.DataManager.ResetRequests();
            }
            return(RedirectToAction("Index", "Home"));
        }
Esempio n. 6
0
        public ActionResult CustomerTags(int customerId)
        {
            var ctx      = new SCMContext();
            var customer = ctx.Customers.Find(customerId);

            ViewBag.EditTags = Utils.DataManager.Tags().Where(x => x.TagType == "C").ToList();
            return(PartialView("CustomerTags", customer.Tags.Select(x => x.Id).ToList()));
        }
Esempio n. 7
0
        public ActionResult ServiceRequestTags(int requestId)
        {
            var ctx     = new SCMContext();
            var request = ctx.ServiceRequests.Find(requestId);

            ViewBag.EditTags = Utils.DataManager.Tags().Where(x => x.TagType == "R").ToList();
            return(PartialView("RequestTags", request.Tags.Select(x => x.Id).ToList()));
        }
Esempio n. 8
0
        public ActionResult CustomerMerge([Bind(Include = "CustomerId1,CustomerId2")] CustomerMerge model)
        {
            if (ModelState.IsValid)
            {
                SCMContext ctx       = new SCMContext();
                var        customer1 = ctx.Customers.Find(model.CustomerId1);
                var        customer2 = ctx.Customers.Find(model.CustomerId2);

                if (string.IsNullOrEmpty(customer2.Phone))
                {
                    customer2.Phone = customer1.Phone;
                }
                if (string.IsNullOrEmpty(customer2.Mobile))
                {
                    customer2.Mobile = customer1.Mobile;
                }
                if (!customer2.CityId.HasValue)
                {
                    customer2.CityId = customer1.CityId;
                }
                if (!customer2.RegionId.HasValue)
                {
                    customer2.RegionId = customer1.RegionId;
                }
                if (string.IsNullOrEmpty(customer2.Address))
                {
                    customer2.Address = customer1.Address;
                }
                if (string.IsNullOrEmpty(customer2.Comments))
                {
                    customer2.Comments = customer1.Comments;
                }

                var requests = customer1.ServiceRequests.ToList();
                foreach (var r in requests)
                {
                    r.CustomerId = customer2.Id;
                }

                var tags = customer1.Tags.ToList();
                foreach (var t in tags)
                {
                    if (!t.Customers.Contains(customer2))
                    {
                        t.Customers.Add(customer2);
                    }
                }
                ctx.SaveChanges();

                Utils.DataManager.ResetCustomers();
                Utils.DataManager.ResetRequests();
            }
            return(RedirectToAction("Index", "Home"));
        }
Esempio n. 9
0
        public static IEnumerable <Center> Centers()
        {
            if (HttpContext.Current.Cache["Centers"] == null)
            {
                var ctx = new SCMContext();
                var qry = ctx.Centers;

                HttpContext.Current.Cache.Insert("Centers",
                                                 qry.ToList(), null,
                                                 System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0));
            }

            return(HttpContext.Current.Cache["Centers"] as IEnumerable <Center>);
        }
Esempio n. 10
0
        public static IEnumerable <Region> Regions()
        {
            lock (regionsLock)
            {
                if (HttpContext.Current.Cache["Regions"] == null)
                {
                    var ctx = new SCMContext();
                    var qry = ctx.Regions.OrderBy(x => x.Name);

                    HttpContext.Current.Cache.Insert("Regions",
                                                     qry.ToList(), null,
                                                     System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 25, 0));
                }
            }
            return(HttpContext.Current.Cache["Regions"] as IEnumerable <Region>);
        }
Esempio n. 11
0
        public static IEnumerable <Department> Departments()
        {
            lock (departmentsLock)
            {
                if (HttpContext.Current.Cache["Departments"] == null)
                {
                    var ctx = new SCMContext();
                    var qry = ctx.Departments.OrderBy(x => x.Id);

                    HttpContext.Current.Cache.Insert("Departments",
                                                     qry.ToList(), null,
                                                     System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 20, 0));
                }
            }
            return(HttpContext.Current.Cache["Departments"] as IEnumerable <Department>);
        }
Esempio n. 12
0
        public static IEnumerable <Engineer> Engineers()
        {
            lock (engineersLock)
            {
                if (HttpContext.Current.Cache["Engineers"] == null)
                {
                    var ctx = new SCMContext();
                    var qry = ctx.Engineers.OrderBy(x => x.Name);;

                    HttpContext.Current.Cache.Insert("Engineers",
                                                     qry.ToList(), null,
                                                     System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 20, 0));
                }
            }
            return(HttpContext.Current.Cache["Engineers"] as IEnumerable <Engineer>);
        }
Esempio n. 13
0
        public void GetReportObject(int id)
        {
            var ctx    = new SCMContext();
            var report = ctx.Reports.Find(id);

            Report = report;
            if (string.IsNullOrEmpty(Title))
            {
                Title = Report.Title;
            }
            if (string.IsNullOrEmpty(SubTitle))
            {
                SubTitle = Report.SubTitle;
            }
            Id = Report.Id;
        }
Esempio n. 14
0
        private void ImportEngineers(SCMContext ctx, ref IEnumerable <ServiceRequestRecord> data)
        {
            ResetProgress();

            var curList      = ctx.Engineers.Select(x => x.Name).ToList();
            var dic          = new Dictionary <string, Engineer>();
            var objects      = data.Select(x => new { Name = x.SVC_Engineer_Name }).Distinct().Where(x => !string.IsNullOrEmpty(x.Name)).ToList();
            var objectsToAdd = objects.Where(x => !curList.Contains(x.Name));

            total = objectsToAdd.Count();

            foreach (var item in objectsToAdd)
            {
                var rec = new Engineer()
                {
                    Name = item.Name, DepartmentId = 1, IsActive = true
                };
                ctx.Engineers.Add(rec);
                ctx.SaveChanges();
                if (!dic.ContainsKey(rec.Name.ToUpper()))
                {
                    dic.Add(rec.Name.ToUpper(), rec);
                }

                UpdateProgress();
            }
            foreach (var item in ctx.Engineers)
            {
                if (!dic.ContainsKey(item.Name.ToUpper()))
                {
                    dic.Add(item.Name.ToUpper(), item);
                }
            }
            foreach (var item in data)
            {
                if (!string.IsNullOrEmpty(item.SVC_Engineer_Name))
                {
                    item.EngineerId = dic[item.SVC_Engineer_Name.ToUpper()].Id;
                }
                else
                {
                    item.EngineerId = null;
                }
            }

            Progress = 100;
        }
Esempio n. 15
0
        private void ImportCancelReasons(SCMContext ctx, ref IEnumerable <ServiceRequestRecord> data)
        {
            ResetProgress();

            var curList = ctx.CancelReasons.Select(x => x.Reason).ToList();
            var dic     = new Dictionary <string, CancelReason>();
            var objects = data.Select(x => new { Reason = x.Cancel_Reason }).Distinct().Where(x => !string.IsNullOrEmpty(x.Reason)).ToList();

            var objectToAdd = objects.Where(x => !curList.Contains(x.Reason));

            total = objectToAdd.Count();
            foreach (var item in objectToAdd)
            {
                var rec = new CancelReason()
                {
                    Reason = item.Reason
                };
                ctx.CancelReasons.Add(rec);
                ctx.SaveChanges();
                if (!dic.ContainsKey(rec.Reason.ToUpper()))
                {
                    dic.Add(rec.Reason.ToUpper(), rec);
                }

                UpdateProgress();
            }
            foreach (var item in ctx.CancelReasons)
            {
                if (!dic.ContainsKey(item.Reason.ToUpper()))
                {
                    dic.Add(item.Reason.ToUpper(), item);
                }
            }
            foreach (var item in data)
            {
                if (!string.IsNullOrEmpty(item.Cancel_Reason))
                {
                    item.CancelReasonId = dic[item.Cancel_Reason.ToUpper()].Id;
                }
                else
                {
                    item.CancelReasonId = null;
                }
            }

            Progress = 100;
        }
Esempio n. 16
0
 public static void AddCustomer(int id)
 {
     lock (customersLock)
     {
         if (HttpContext.Current.Cache["Customers"] != null)
         {
             var list     = (List <Customer>)HttpContext.Current.Cache["Customers"];
             var ctx      = new SCMContext();
             var customer = ctx.Customers.Find(id);
             if (customer != null)
             {
                 list.Add(customer);
                 HttpContext.Current.Cache["Customers"] = list.OrderByDescending(x => x.Name).ToList();
             }
         }
     }
 }
Esempio n. 17
0
 public static void AddRequest(int id)
 {
     lock (requestsLock)
     {
         if (HttpContext.Current.Cache["Requests"] != null)
         {
             var list    = (List <ServiceRequest>)HttpContext.Current.Cache["Requests"];
             var ctx     = new SCMContext();
             var request = ctx.ServiceRequests.Find(id);
             if (request != null)
             {
                 list.Add(request);
                 HttpContext.Current.Cache["Requests"] = list.OrderByDescending(x => x.RequestDate).ToList();
             }
         }
     }
 }
Esempio n. 18
0
        public IEnumerable <Center> GetCenters()
        {
            string objectNameInCache = "Centers";

            if (Utils.AppCache.GetCached <IEnumerable <Center> >(objectNameInCache) != null)
            {
                return(Utils.AppCache.GetCached <IEnumerable <Center> >(objectNameInCache));
            }
            else
            {
                var ctx = new SCMContext();
                var qry = ctx.Centers.OrderBy(x => x.Name);

                Utils.AppCache.SetCached(objectNameInCache, qry.ToList());
                return(Utils.AppCache.GetCached <IEnumerable <Center> >(objectNameInCache));
            }
        }
Esempio n. 19
0
        public void Import(IEnumerable <ServiceRequestRecord> data)
        {
            int i = 1;

            Progress = 0;


            foreach (var item in data)
            {
                item.SysID = i++;
            }

            using (SCMContext ctx = new SCMContext())
            {
                using (var tx = ctx.Database.BeginTransaction())
                {
                    try
                    {
                        Phase = AppViews.DataImport_Phase1;
                        ImportProducts(ctx, ref data);
                        Phase = AppViews.DataImport_Phase2;
                        ImportCities(ctx, ref data);
                        Phase = AppViews.DataImport_Phase3;
                        ImportCancelReasons(ctx, ref data);
                        Phase = AppViews.DataImport_Phase4;
                        ImportPendingReasons(ctx, ref data);
                        Phase = AppViews.DataImport_Phase5;
                        ImportEngineers(ctx, ref data);
                        Phase = AppViews.DataImport_Phase6;
                        //ImportCustomers(ctx, ref data);
                        Phase = AppViews.DataImport_Phase7;
                        //ImportRequests(ctx, ref data);
                        ImportCustomersAndRequests(ctx, ref data);
                        Phase = "done";
                        tx.Commit();
                    }
                    catch (Exception ex)
                    {
                        ex.Data["data"] = data;
                        tx.Rollback();
                        throw ex;
                    }
                }
            }
        }
Esempio n. 20
0
        public ActionResult RequestsProductModifier([Bind(Include = "ProductId1,ProductId2")] RequestsProductModifier model)
        {
            if (ModelState.IsValid)
            {
                SCMContext ctx      = new SCMContext();
                var        product1 = ctx.Products.Find(model.ProductId1);
                var        product2 = ctx.Products.Find(model.ProductId2);

                var requests = product1.ServiceRequests.ToList();
                foreach (var r in requests)
                {
                    r.ProductId = product2.Id;
                }

                ctx.SaveChanges();
                Utils.DataManager.ResetRequests();
            }
            return(RedirectToAction("Index", "Home"));
        }
Esempio n. 21
0
        public static IEnumerable <Customer> Customers()
        {
            lock (customersLock)
            {
                if (HttpContext.Current.Cache["Customers"] == null)
                {
                    var ctx = new SCMContext();

                    var qry = (from x in ctx.Customers.Include(x => x.Region).Include(x => x.City).Include(x => x.Tags)
                               select x);


                    //HttpContext.Current.Cache["Customers"] = qry.ToList();
                    HttpContext.Current.Cache.Insert("Customers",
                                                     qry.ToList(), null,
                                                     System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 25, 0));
                }
            }

            return((IEnumerable <Customer>)HttpContext.Current.Cache["Customers"]);
        }
Esempio n. 22
0
        private void ImportProducts(SCMContext ctx, ref IEnumerable <ServiceRequestRecord> data)
        {
            ResetProgress();

            var curList      = ctx.Products.Select(x => x.Id.ToUpper()).ToList();
            var dic          = new Dictionary <string, Product>();
            var objects      = data.Select(x => new { Id = x.Service_Product_Code, Name = x.SVC_Product.Trim(), IsActive = true }).Distinct().Where(x => !string.IsNullOrEmpty(x.Id)).ToList();
            var objectsToAdd = objects.Where(x => !curList.Contains(x.Id.ToUpper()));

            total = objectsToAdd.Count();
            foreach (var item in objectsToAdd)
            {
                var rec = new Product()
                {
                    Id = item.Id, Name = item.Name.Trim(), IsActive = item.IsActive
                };
                ctx.Products.Add(rec);
                ctx.SaveChanges();
                if (!dic.ContainsKey(rec.Id.ToUpper()))
                {
                    dic.Add(rec.Id.ToUpper(), rec);
                }
                UpdateProgress();
            }
            foreach (var item in ctx.Products)
            {
                if (!dic.ContainsKey(item.Id.ToUpper()))
                {
                    dic.Add(item.Id.ToUpper(), item);
                }
            }
            foreach (var item in data)
            {
                item.ProductId = item.Service_Product_Code.ToUpper();
            }
            Progress = 100;
        }
Esempio n. 23
0
        public static void ChangeRequest(int id)
        {
            Requests();
            lock (requestsLock)
            {
                if (HttpContext.Current.Cache["Requests"] != null)
                {
                    var list    = (List <ServiceRequest>)HttpContext.Current.Cache["Requests"];
                    var ctx     = new SCMContext();
                    var request = ctx.ServiceRequests.Find(id);
                    if (request != null)
                    {
                        int index = list.FindIndex(x => x.Id == id);
                        list.RemoveAt(index);

                        if (request.StatusId < 90 || (request.StatusId >= 90 && request.ClosingDate.HasValue && request.ClosingDate.Value.Year == DateTime.Now.Year))
                        {
                            list.Insert(index, request);
                        }
                        HttpContext.Current.Cache["Requests"] = list.OrderByDescending(x => x.RequestDate).ToList();
                    }
                }
            }
        }
Esempio n. 24
0
 protected SCMContext GetDataContext()
 {
     var db = new SCMContext();
     db.Database.Connection.Open();
     return db;
 }
Esempio n. 25
0
        private void ImportCustomersAndRequests(SCMContext ctx, ref IEnumerable <ServiceRequestRecord> data)
        {
            ResetProgress();
            string dateFormat = "dd/MM/yyyy";

            try
            {
                // Build db customers dictionary
                var dicCustomers = new SortedDictionary <string, int>();
                var dbCustomers  = ctx.Customers.OrderBy(x => x.Name).Select(x => new {
                    Id   = x.Id,
                    Name = x.Name.Trim()
                    ,
                    Phone = string.IsNullOrEmpty(x.Phone) ? "X" : x.Phone.Trim()
                    ,
                    Mobile = string.IsNullOrEmpty(x.Mobile) ? "X" : x.Mobile.Trim()
                }).Distinct().ToList();
                foreach (var cus in dbCustomers)
                {
                    if (cus.Phone != "X")
                    {
                        dicCustomers[cus.Phone + "_" + cus.Name] = cus.Id;
                    }
                    if (cus.Mobile != "X")
                    {
                        dicCustomers[cus.Mobile + "_" + cus.Name] = cus.Id;
                    }
                }

                // Build db RQN dictionary
                // var dicRQN = ctx.ServiceRequests.Select(x => new { Id = x.Id, RQN = x.RQN }).OrderBy(x => x.RQN).ToDictionary(x => x.RQN, y => y.Id);
                var dicRQN      = ctx.ServiceRequests.Where(x => !string.IsNullOrEmpty(x.RQN)).Select(x => new { Id = x.Id, RQN = x.RQN }).OrderBy(x => x.RQN).ToDictionary(x => x.Id, y => y.RQN);
                var dicByPhone  = ctx.ServiceRequests.Where(x => x.StatusId < 90 && !string.IsNullOrEmpty(x.RQN) && x.ProductId != null && !string.IsNullOrEmpty(x.Customer.Phone)).Select(x => new { Key = x.Customer.Phone + "_" + x.ProductId, Id = x.Id }).ToDictionary(x => x.Id, y => y.Key);
                var dicByMobile = ctx.ServiceRequests.Where(x => x.StatusId < 90 && !string.IsNullOrEmpty(x.RQN) && x.ProductId != null && !string.IsNullOrEmpty(x.Customer.Mobile)).Select(x => new { Key = x.Customer.Mobile + "_" + x.ProductId, Id = x.Id }).ToDictionary(x => x.Id, y => y.Key);

                // Build status, engineers and tags lists
                var dic = new Dictionary <string, int>();
                dic.Add("Repair Accepted", 10);
                dic.Add("Repair Pending", 20);
                dic.Add("Repair Canceled", 90);
                dic.Add("Repair Completed", 100);
                var ctags = ctx.Tags.Where(x => x.TagType == "C").ToList();
                var rtags = ctx.Tags.Where(x => x.TagType == "R").ToList();
                // var engineers = ctx.Engineers.OrderBy(x => x.Name).ToDictionary(x => x.Name, y => y.Id);

                // Set progress total
                total = data.Count();

                // Loop through data
                int           batchCounter = 0;
                StringBuilder sb           = new StringBuilder();
                //sb.AppendLine("declare @sid int;");
                //sb.AppendLine("declare @cid int;");

                foreach (var sr in data)
                {
                    if (batchCounter >= 9)
                    {
                        //System.IO.File.AppendAllText("e:/sql.sql", sb.ToString());
                        DbCommand cmd = ctx.Database.Connection.CreateCommand();
                        cmd.CommandText    = "declare @sid int;\r\n" + "declare @cid int;\r\n" + sb.ToString();
                        cmd.CommandTimeout = 100;
                        cmd.Transaction    = ctx.Database.CurrentTransaction.UnderlyingTransaction;
                        cmd.ExecuteNonQuery();

                        batchCounter = 0;
                        sb.Clear();
                        //sb.AppendLine("declare @sid int;");
                        //sb.AppendLine("declare @cid int;");
                        sb.AppendLine("set @sid = 0;");
                        sb.AppendLine("set @cid = 0;");
                    }
                    else
                    {
                        batchCounter++;
                        sb.AppendLine("set @sid = 0;");
                        sb.AppendLine("set @cid = 0;");
                    }

                    var  srByPhone          = string.Format("{0}_{1}", sr.Customer_Phone_No ?? "X", sr.Service_Product_Code ?? "X");
                    var  srByMobile         = string.Format("{0}_{1}", sr.Cellular_No ?? "X", sr.Service_Product_Code ?? "X");
                    bool isRqnRegistered    = dicRQN.ContainsValue(sr.Receipt_No);
                    bool isPhoneRegistered  = false;
                    bool isMobileRegistered = false;
                    if (!isRqnRegistered)
                    {
                        isPhoneRegistered = dicByPhone.Values.Contains(srByPhone);
                        if (!isPhoneRegistered)
                        {
                            isMobileRegistered = dicByMobile.Values.Contains(srByMobile);
                        }
                    }

                    if (isRqnRegistered || isPhoneRegistered || isMobileRegistered)
                    {
                        // the request exist
                        string sql       = @"UPDATE ServiceRequests SET [EngineerId] = {0}, [StatusId] = {1}, [StatusDate] = (case when [RequestDate] > getdate() then [RequestDate] else getdate() end), [ProductId] = {2}, [Model] = {3}, [SN] = {4}, [ClosingDate] = {5}, [Description] = {6}, UpdatedOn = getdate(), UpdatedBy = '{7}' Where {8}; ";
                        var    engId     = (sr.EngineerId.HasValue && sr.EngineerId.Value > 0) ? sr.EngineerId.ToString() : "NULL";
                        var    model     = string.IsNullOrEmpty(sr.Model) ? "NULL" : string.Format("N'{0}'", sr.Model.Replace("'", "''"));
                        var    rqn       = sr.Receipt_No;
                        var    sn        = string.IsNullOrEmpty(sr.Serial_No) ? "NULL" : string.Format("N'{0}'", sr.Serial_No.Replace("'", "''"));
                        var    productId = (!string.IsNullOrEmpty(sr.ProductId)) ? "'" + sr.ProductId + "'" : "NULL";

                        DateTime?closingDate = null;
                        if (!string.IsNullOrEmpty(sr.Completion_Date))
                        {
                            DateTime dclosing;
                            if (DateTime.TryParseExact(sr.Completion_Date, dateFormat, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dclosing))
                            {
                                closingDate = dclosing;
                            }
                        }
                        var    description = string.IsNullOrEmpty(sr.CIC_Remark) ? "NULL" : string.Format("N'{0}'", sr.CIC_Remark.Replace("'", "''"));
                        var    userName    = HttpContext.Current.User.Identity.Name;
                        string ws          = "";
                        if (isRqnRegistered)
                        {
                            ws = "[RQN] = '" + rqn + "'";
                        }
                        else if (isPhoneRegistered)
                        {
                            var idByPhone = dicByPhone.First(x => x.Value == srByPhone).Key;
                            ws = "[Id] = " + idByPhone.ToString();
                        }
                        else if (isMobileRegistered)
                        {
                            var idByMobile = dicByMobile.First(x => x.Value == srByMobile).Key;
                            ws = "[Id] = " + idByMobile.ToString();
                        }
                        var valsql = string.Format(sql, engId, dic[sr.Status], productId, model, sn, !closingDate.HasValue ? "NULL" : "'" + closingDate.Value.ToString("dd/MMM/yyyy HH:mm:ss") + "'", description, userName, ws);
                        sb.AppendLine(valsql);
                    }
                    else
                    {
                        // New request

                        // Check Customer
                        string phoneKey   = string.IsNullOrEmpty(sr.Customer_Phone_No) || string.IsNullOrWhiteSpace(sr.Customer_Phone_No) ? "X" : sr.Customer_Phone_No.Trim();
                        string mobKey     = string.IsNullOrEmpty(sr.Cellular_No) || string.IsNullOrWhiteSpace(sr.Cellular_No) ? "X" : sr.Cellular_No.Trim();
                        string key1       = phoneKey + "_" + sr.Customer_Name.Trim();
                        string key2       = mobKey + "_" + sr.Customer_Name.Trim();
                        string customerId = "@cid";
                        if (dicCustomers.ContainsKey(key1))
                        {
                            customerId = dicCustomers[key1].ToString();
                        }
                        else if (dicCustomers.ContainsKey(key2))
                        {
                            customerId = dicCustomers[key2].ToString();
                        }
                        else
                        {
                            // Insert new customer

                            string csql    = @"set @cid = IsNull((select Top 1 Id from Customers Where Ltrim(rtrim([Name])) = '{0}' AND  ([Phone] = {1} OR [Mobile] = {2}) ) , 0); IF(@cid = 0) BEGIN  INSERT INTO Customers (Name, Phone, Mobile, CityId, Address) VALUES (N'{0}', {1}, {2}, {3}, {4});  set @cid = @@identity;   END;";
                            var    cPhone  = (phoneKey == "X") ? "NULL" : string.Format("N'{0}'", phoneKey.Replace("'", "''"));
                            var    cMobile = (mobKey == "X") ? "NULL" : string.Format("N'{0}'", mobKey.Replace("'", "''"));
                            if (cPhone == "NULL" && cMobile == "NULL")
                            {
                                cPhone = "011XXXX";
                            }
                            var    cCity    = sr.CityId.HasValue ? sr.CityId.Value.ToString() : "NULL";
                            var    cAddress = string.IsNullOrEmpty(sr.Address) ? "NULL" : string.Format("N'{0}'", sr.Address.Replace("'", "''"));
                            string cValSql  = string.Format(csql, sr.Customer_Name.Trim(), cPhone, cMobile, cCity, cAddress);
                            sb.AppendLine(cValSql);
                            //sb.AppendLine("set @cid = @@identity;");
                        }

                        string sql = @"INSERT INTO ServiceRequests ([CenterId], [CustomerId], [DepartmentId], [RequestDate], [EngineerId], [RQN], [StatusId], [StatusDate], [Model], [SN], [ClosingDate], [Description], [CreatedOn], [CreatedBy], [UpdatedOn], [UpdatedBy], [IsDeleted], [ProductId]) VALUES (1,{0}, 1, '{1}', {2}, '{3}', {4}, '{1}', {5}, {6}, {7}, {8}, getdate(), '{9}', getdate(), '{9}', 0, {10} );";

                        DateTime requestDate = DateTime.Now;
                        if (!string.IsNullOrEmpty(sr.Request_Date))
                        {
                            DateTime drequest;
                            if (DateTime.TryParseExact(sr.Request_Date, dateFormat, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out drequest))
                            {
                                requestDate = drequest;
                            }
                        }
                        var      engId       = (sr.EngineerId.HasValue && sr.EngineerId.Value > 0) ? sr.EngineerId.ToString() : "NULL";
                        var      model       = string.IsNullOrEmpty(sr.Model) ? "NULL" : string.Format("N'{0}'", sr.Model.Replace("'", "''"));
                        var      sn          = string.IsNullOrEmpty(sr.Serial_No) ? "NULL" : string.Format("N'{0}'", sr.Serial_No.Replace("'", "''"));
                        var      productId   = (!string.IsNullOrEmpty(sr.ProductId)) ? "'" + sr.ProductId + "'" : "NULL";
                        DateTime?closingDate = null;
                        if (!string.IsNullOrEmpty(sr.Completion_Date))
                        {
                            DateTime dclosing;
                            if (DateTime.TryParseExact(sr.Completion_Date, dateFormat, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dclosing))
                            {
                                closingDate = dclosing;
                            }
                        }
                        var description = string.IsNullOrEmpty(sr.CIC_Remark) ? "NULL" : string.Format("N'{0}'", sr.CIC_Remark.Replace("'", "''"));
                        var userName    = HttpContext.Current.User.Identity.Name;

                        string valsql = string.Format(sql, customerId, requestDate.ToString("dd/MMM/yyyy HH:mm:ss"), engId
                                                      , sr.Receipt_No, dic[sr.Status], model, sn, !closingDate.HasValue ? "NULL" : "'" + closingDate.Value.ToString("dd/MMM/yyyy HH:mm:ss") + "'", description, userName, productId);
                        sb.AppendLine(valsql);
                        sb.AppendLine("set @sid = @@identity;");
                        if (!string.IsNullOrEmpty(sr.Svc_Type) || !string.IsNullOrEmpty(sr.Warranty_Flag))
                        {
                            var t = rtags.FirstOrDefault(x => x.Name == sr.Svc_Type);
                            if (t != null)
                            {
                                sb.AppendFormat("INSERT INTO RequestTags (TagId, ServiceRequestId) VALUES ({0}, @sid);", t.Id);
                                sb.AppendLine();
                            }
                            var t1 = rtags.FirstOrDefault(x => x.Name == sr.Warranty_Flag);
                            if (t1 != null)
                            {
                                sb.AppendFormat("INSERT INTO RequestTags (TagId, ServiceRequestId) VALUES ({0}, @sid);", t1.Id);
                                sb.AppendLine();
                            }
                        }
                    }

                    UpdateProgress();
                }
                if (batchCounter > 0)
                {
                    //System.IO.File.AppendAllText("e:/sql.sql", sb.ToString());
                    DbCommand cmd = ctx.Database.Connection.CreateCommand();
                    cmd.CommandText    = "declare @sid int;\r\n" + "declare @cid int;\r\n" + sb.ToString();
                    cmd.CommandTimeout = 100;
                    cmd.Transaction    = ctx.Database.CurrentTransaction.UnderlyingTransaction;
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                throw;
            }

            //
            Progress = 100;
        }
Esempio n. 26
0
        private void ImportCustomers(SCMContext ctx, ref IEnumerable <ServiceRequestRecord> data)
        {
            ResetProgress();

            var curList = ctx.Customers.Select(x => x.Name).ToList();
            var dic     = new Dictionary <string, Customer>();
            var tags    = ctx.Tags.Where(x => x.TagType == "C").ToDictionary(x => x.Name, y => y);
            var objects = data.Select(x => new { Name = x.Customer_Name, Phone = x.Customer_Phone_No, Mobile = x.Cellular_No, City = x.CityId, Address = x.Address, CustomerType = x.Customer_Type }).Distinct().Where(x => !string.IsNullOrEmpty(x.Name)).ToList();

            var objectsToAdd = objects.Where(x => !curList.Contains(x.Name));

            total = objectsToAdd.Count();
            foreach (var item in objectsToAdd)
            {
                var rec = new Customer()
                {
                    Name = item.Name, Phone = item.Phone, Mobile = item.Mobile, CityId = item.City, Address = item.Address
                };
                if (string.IsNullOrEmpty(rec.Phone) && string.IsNullOrEmpty(rec.Mobile))
                {
                    rec.Phone = "011XXXX";
                }
                ctx.Customers.Add(rec);
                ctx.SaveChanges();
                if (!dic.ContainsKey(rec.Name.ToUpper()))
                {
                    dic.Add(rec.Name.ToUpper(), rec);
                }

                // Add Customer Tags
                string t1 = item.CustomerType;
                if (t1 == "General Enduser")
                {
                    t1 = "General End User";
                }
                Tag t = null;
                if (!tags.ContainsKey(t1))
                {
                    t = new Tag()
                    {
                        Name = t1, TagType = "C", Format = "label-default"
                    };
                    ctx.Tags.Add(t);
                    ctx.SaveChanges();
                    tags.Add(t.Name, t);
                }
                else
                {
                    t = tags[t1];
                }
                if (t != null)
                {
                    rec.Tags.Add(t);
                    ctx.SaveChanges();
                }

                UpdateProgress();
            }
            foreach (var item in ctx.Customers)
            {
                if (!dic.ContainsKey(item.Name.ToUpper()))
                {
                    dic.Add(item.Name.ToUpper(), item);
                }
            }
            ResetProgress();
            total = data.Count();
            foreach (var item in data)
            {
                if (!string.IsNullOrEmpty(item.Customer_Name) && dic.ContainsKey(item.Customer_Name))
                {
                    item.CustomerId = dic[item.Customer_Name.ToUpper()].Id;
                }
                UpdateProgress();
            }

            Progress = 100;
        }
Esempio n. 27
0
        private void ImportRequests(SCMContext ctx, ref IEnumerable <ServiceRequestRecord> data)
        {
            ResetProgress();

            var list = data.Where(x => !string.IsNullOrEmpty(x.Receipt_No)).ToDictionary(x => x.Receipt_No, y => y.SysID);
            var dic  = new Dictionary <string, int>();

            dic.Add("Repair Accepted", 10);
            dic.Add("Repair Pending", 20);
            dic.Add("Repair Canceled", 90);
            dic.Add("Repair Completed", 100);
            var tags = ctx.Tags.Where(x => x.TagType == "R").ToList();

            var rqns = list.Keys.ToArray();
            var ids  = new List <int>();

            var objectsToUpdate = ctx.ServiceRequests.Where(x => !string.IsNullOrEmpty(x.RQN) && rqns.Contains(x.RQN));

            total = objectsToUpdate.Count();
            StringBuilder sb1     = new StringBuilder();
            int           counter = 0;

            foreach (var item in objectsToUpdate)
            {
                if (counter >= 9)
                {
                    DbCommand cmd1 = ctx.Database.Connection.CreateCommand();
                    cmd1.CommandText = sb1.ToString();

                    cmd1.Transaction = ctx.Database.CurrentTransaction.UnderlyingTransaction;
                    cmd1.ExecuteNonQuery();
                    sb1     = new StringBuilder();
                    counter = 0;
                }
                else
                {
                    counter++;
                }
                var sr = data.First(x => x.SysID == list[item.RQN]);

                string   sql         = @"UPDATE ServiceRequests SET [EngineerId] = {0}, [StatusId] = {1}, [StatusDate] = (case when [RequestDate] > getdate() then [RequestDate] else getdate() end), [ProductId] = {2}, [Model] = {3}, [SN] = {4}, [ClosingDate] = {5}, [Description] = {6}, UpdatedOn = getdate(), UpdatedBy = '{7}' Where [RQN] = '{8}'; ";
                var      engId       = (sr.EngineerId.HasValue && sr.EngineerId.Value > 0) ? sr.EngineerId.ToString() : "NULL";
                var      model       = string.IsNullOrEmpty(sr.Model) ? "NULL" : string.Format("N'{0}'", sr.Model.Replace("'", "''"));
                var      rqn         = item.RQN;
                var      sn          = string.IsNullOrEmpty(sr.Serial_No) ? "NULL" : string.Format("N'{0}'", sr.Serial_No.Replace("'", "''"));
                DateTime?closingDate = null;
                if (!string.IsNullOrEmpty(sr.Completion_Date))
                {
                    closingDate = Convert.ToDateTime(sr.Completion_Date);
                }
                var description = string.IsNullOrEmpty(sr.CIC_Remark) ? "NULL" : string.Format("N'{0}'", sr.CIC_Remark.Replace("'", "''"));
                var userName    = HttpContext.Current.User.Identity.Name;
                if (!string.IsNullOrEmpty(sr.ProductId))
                {
                    item.ProductId = "'" + sr.ProductId + "'";
                }
                else
                {
                    item.ProductId = "NULL";
                }

                var valsql = string.Format(sql, engId, dic[sr.Status], item.ProductId, model, sn, !closingDate.HasValue ? "NULL" : "'" + closingDate.Value.ToString("dd/MMM/yyyy HH:mm:ss") + "'", description, userName, rqn);
                sb1.AppendLine(valsql);

                ids.Add(sr.SysID);


                UpdateProgress();
            }
            if (counter > 0)
            {
                DbCommand cmd1 = ctx.Database.Connection.CreateCommand();
                cmd1.CommandText    = sb1.ToString();
                cmd1.CommandTimeout = 200;
                cmd1.Transaction    = ctx.Database.CurrentTransaction.UnderlyingTransaction;
                cmd1.ExecuteNonQuery();
                counter = 0;
            }

            ResetProgress();
            var objectsToAdd = data.Where(x => !ids.Contains(x.SysID));

            total = objectsToAdd.Count();
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("declare @id int;");
            try
            {
                counter = 0;
                foreach (var sr in objectsToAdd)
                {
                    if (counter >= 9)
                    {
                        DbCommand cmd = ctx.Database.Connection.CreateCommand();
                        cmd.CommandText = sb.ToString();
                        cmd.Transaction = ctx.Database.CurrentTransaction.UnderlyingTransaction;
                        cmd.ExecuteNonQuery();
                        sb = new StringBuilder();
                        sb.AppendLine("declare @id int;");
                        counter = 0;
                    }
                    else
                    {
                        counter++;
                    }
                    string sql = @"INSERT INTO ServiceRequests ([CenterId], [CustomerId], [DepartmentId], [RequestDate], [EngineerId], [RQN], [StatusId], [StatusDate], [Model], [SN], [ClosingDate], [Description], [CreatedOn], [CreatedBy], [UpdatedOn], [UpdatedBy], [IsDeleted]) VALUES (1,{0}, 1, '{1}', {2}, '{3}', {4}, '{1}', {5}, {6}, {7}, {8}, getdate(), '{9}', getdate(), '{9}', 0 );";

                    var      requestDate = !string.IsNullOrEmpty(sr.Request_Date) ? Convert.ToDateTime(sr.Request_Date) : DateTime.Now;
                    var      engId       = (sr.EngineerId.HasValue && sr.EngineerId.Value > 0) ? sr.EngineerId.ToString() : "NULL";
                    var      model       = string.IsNullOrEmpty(sr.Model) ? "NULL" : string.Format("N'{0}'", sr.Model.Replace("'", "''"));
                    var      sn          = string.IsNullOrEmpty(sr.Serial_No) ? "NULL" : string.Format("N'{0}'", sr.Serial_No.Replace("'", "''"));
                    DateTime?closingDate = null;
                    if (!string.IsNullOrEmpty(sr.Completion_Date))
                    {
                        closingDate = Convert.ToDateTime(sr.Completion_Date);
                    }
                    var description = string.IsNullOrEmpty(sr.CIC_Remark) ? "NULL" : string.Format("N'{0}'", sr.CIC_Remark.Replace("'", "''"));
                    var userName    = HttpContext.Current.User.Identity.Name;

                    string valsql = string.Format(sql, sr.CustomerId, requestDate.ToString("dd/MMM/yyyy HH:mm:ss"), engId
                                                  , sr.Receipt_No, dic[sr.Status], model, sn, !closingDate.HasValue ? "NULL" : "'" + closingDate.Value.ToString("dd/MMM/yyyy HH:mm:ss") + "'", description, userName);
                    sb.AppendLine(valsql);
                    sb.AppendLine("set @id = @@identity;");
                    if (!string.IsNullOrEmpty(sr.Svc_Type) || !string.IsNullOrEmpty(sr.Warranty_Flag))
                    {
                        var t = tags.FirstOrDefault(x => x.Name == sr.Svc_Type);
                        if (t != null)
                        {
                            sb.AppendFormat("INSERT INTO RequestTags (TagId, ServiceRequestId) VALUES ({0}, @id);", t.Id);
                            sb.AppendLine();
                        }
                        var t1 = tags.FirstOrDefault(x => x.Name == sr.Warranty_Flag);
                        if (t1 != null)
                        {
                            sb.AppendFormat("INSERT INTO RequestTags (TagId, ServiceRequestId) VALUES ({0}, @id);", t1.Id);
                            sb.AppendLine();
                        }
                    }


                    System.Diagnostics.Debug.Print(sr.SysID.ToString());
                    UpdateProgress();
                }
                if (counter > 0)
                {
                    DbCommand cmd = ctx.Database.Connection.CreateCommand();
                    cmd.CommandText = sb.ToString();
                    cmd.Transaction = ctx.Database.CurrentTransaction.UnderlyingTransaction;
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                //ex.Data["item"] = item;
                //ex.Data["sr"] = sr;
                throw ex;
            }
            //ctx.SaveChanges();

            Progress = 100;
        }
Esempio n. 28
0
        public static IDictionary <int, string> GetCancelReasons()
        {
            var ctx = new SCMContext();

            return(ctx.CancelReasons.OrderBy(x => x.Reason).ToDictionary(x => x.Id, y => y.Reason));
        }
Esempio n. 29
0
        public ActionResult Index()
        {
            var scm = new SCMContext();

            return(PartialView("Index", scm.Reports.ToList()));
        }