Beispiel #1
0
        public static IEnumerable<WorkType> GetList()
        {
            //SqlParameter pIdAdmin = new SqlParameter() { ParameterName = "id_admin", SqlValue = idAdmin, SqlDbType = SqlDbType.Int };
            var dt = Db.Service.ExecuteQueryStoredProcedure("get_work_type_list");

            var lst = new List<WorkType>();

            foreach (DataRow row in dt.Rows)
            {
                var model = new WorkType(row);
                lst.Add(model);
            }

            return lst;
        }
Beispiel #2
0
        private void FillSelf(DataRow row, bool fillObj = false, bool fillNames = false)
        {
            Id = Db.DbHelper.GetValueIntOrDefault(row, "id");
            IdClaim = Db.DbHelper.GetValueIntOrDefault(row, "id_claim");
            IdClaim2ClaimState = Db.DbHelper.GetValueIntOrDefault(row, "id_claim2claim_state");
            ProcessEnabled = Db.DbHelper.GetValueBool(row, "process_enabled");
            DeviceEnabled = Db.DbHelper.GetValueBool(row, "device_enabled");
            ZipClaim = Db.DbHelper.GetValueBoolOrNull(row, "zip_claim");
            ZipClaimNumber = Db.DbHelper.GetValueString(row, "zip_claim_number");
            CounterMono = Db.DbHelper.GetValueIntOrNull(row, "counter_mono");
            CounterColor = Db.DbHelper.GetValueIntOrNull(row, "counter_color");
            CounterTotal = Db.DbHelper.GetValueIntOrNull(row, "counter_total");
            NoCounter = Db.DbHelper.GetValueBoolOrNull(row, "no_counter");
            Descr = Db.DbHelper.GetValueString(row, "descr");
            CounterUnavailable = Db.DbHelper.GetValueBoolOrNull(row, "counter_unavailable");
            CounterDescr = Db.DbHelper.GetValueString(row, "counter_descr");
            CreatorSid = Db.DbHelper.GetValueString(row, "creator_sid");
            EngeneerSid = Db.DbHelper.GetValueString(row, "engeneer_sid");
            AdminSid = Db.DbHelper.GetValueString(row, "admin_sid");
            DeviceId = Db.DbHelper.GetValueIntOrDefault(row, "id_device");
            WorkTypeId = Db.DbHelper.GetValueIntOrDefault(row, "id_work_type");
            TimeOnWorkMinutes = Db.DbHelper.GetValueIntOrNull(row, "time_on_work_minutes");
            ClientSdNum = Db.DbHelper.GetValueString(row, "client_sd_num");
            DateCreate = Db.DbHelper.GetValueDateTimeOrDefault(row, "date_create");

            if (fillNames)
            {
                Admin = new EmployeeSm(AdminSid);
                Engeneer = new EmployeeSm(EngeneerSid);
                Creator = new EmployeeSm(CreatorSid);
            }

            if (fillObj)
            {
                Device = new Device(DeviceId);
                WorkType = new WorkType(WorkTypeId);
                DeviceClassifierCaterory = new ClassifierCaterory(Device.ClassifierCategoryId);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Перевод заявки на следующую стадию
        /// </summary>
        /// <param name="confirm">Подтвердить или отклонить назначение заявки</param>
        public void Go(bool confirm = true)
        {
            if (Id <= 0) throw new ArgumentException("Невозможно предать заявку. Не указан ID заявки.");

            //Save();
            string descr = Empty;
            var currState = GetClaimCurrentState(Id);
            var nextState = new ClaimState();
            bool saveStateInfo = true;
            bool sendNote = false;
            ServiceRole[] noteTo = { ServiceRole.CurSpecialist };
            string noteText = Empty;
            string noteSubject = Empty;
            bool goNext = false;
            bool saveClaim = false;//Метод вызывается из удаленных программ и поэтому не всегда нухно схранять статус
            //ReFillSelf(true);

            if (currState.SysName.ToUpper().Equals("NEW"))
            {
                goNext = true;
                saveClaim = true;
                int? wtId = null;
                if (!IdWorkType.HasValue)
                {
                    wtId = new Claim(Id).IdWorkType;
                    if (!wtId.HasValue)
                        throw new ArgumentException(
                            "Невозможно определить следующий статус. Тип работ заявки не указан.");
                }
                else
                {
                    wtId = IdWorkType;
                }
                var wtSysName = new WorkType(wtId.Value).SysName;
                descr =
                    $"{Descr}\r\nУстановлен тип работ {wtSysName}\r\nНазначен специалист {AdHelper.GetUserBySid(SpecialistSid).FullName}";

                switch (wtSysName)
                {
                    case "ДНО":
                    case "НПР":
                    case "ТЭО":
                    case "УТЗ":
                        nextState = new ClaimState("TECHSET");
                        CurTechSid = SpecialistSid;
                        break;
                    case "РТО":
                    case "МТС":
                    case "УРМ":
                    case "ЗРМ":
                    case "МДО":
                    case "ИПТ":
                    case "РЗРД":
                    case "ЗНЗЧ":
                        nextState = new ClaimState("SERVADMSET");
                        CurAdminSid = SpecialistSid;
                        break;
                }
                sendNote = true;
                noteTo = new[] { ServiceRole.CurSpecialist };
                noteText = $@"Вам назначена заявка №%ID% %LINK%";
                noteSubject = $"[Заявка №%ID%] Вам назначена заявка";

            }
            else if (currState.SysName.ToUpper().Equals("TECHSET"))
            {
                goNext = true;
                saveClaim = true;
                if (confirm)
                {
                    nextState = new ClaimState("TECHWORK");
                    CurTechSid = CurUserAdSid;
                    SpecialistSid = CurUserAdSid;
                }
                else
                {
                    descr = $"Отклонено\r\n{Descr}";
                    nextState = new ClaimState("SERVADMSETWAIT");
                    //Очищаем выбранного специалиста так как статус заявки поменялся
                    Clear(specialist: true, tech: true);
                    //sendNote = true;
                    //noteTo = new[] { ServiceRole.CurAdmin };
                    //noteText = $@"Отклонено назначение заявки №%ID% %LINK%";
                    //noteSubject = $"[Заявка №%ID%] Отклонено назначение СТП";
                }
            }
            else if (currState.SysName.ToUpper().Equals("TECHWORK"))
            {
                goNext = true;
                saveClaim = true;
                if (confirm)
                {
                    ServiceSheet4Save.IdClaim = Id;
                    if (ServiceSheet4Save == null || ServiceSheet4Save.IdClaim == 0)
                    {
                        throw new ArgumentException("Сервисный лист отсутствует. Операция не завершена!");
                    }

                    ////if (!ServiceSheet4Save.NoTechWork)
                    ////{
                    ServiceSheet4Save.CurUserAdSid = CurUserAdSid;
                    ServiceSheet4Save.EngeneerSid = CurUserAdSid;
                    ServiceSheet4Save.IdServiceIssue = -999;
                    ServiceSheet4Save.Save("TECHWORK");
                    if (ServiceSheet4Save.ProcessEnabled && ServiceSheet4Save.DeviceEnabled)
                    {
                        nextState = new ClaimState("TECHDONE");
                        //Сначала сохраняем промежуточный статус
                        SaveStateStep(nextState.Id);
                        saveStateInfo = false;
                        nextState = new ClaimState("DONE");

                        //Если есть хоть один не установленный ЗИП 
                        if (GetOrderedZipItemList(Id, ServiceSheet4Save.Id).Any(x => !x.Installed))
                        {
                            nextState = new ClaimState("SERVADMSETWAIT");
                        }
                    }
                    else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) &&
                             ServiceSheet4Save.ZipClaim.HasValue && ServiceSheet4Save.ZipClaim.Value)
                    {
                        //nextState = new ClaimState("TECHDONE");
                        ////Сначала сохраняем промежуточный статус
                        //SaveStateStep(nextState.Id);
                        saveStateInfo = false;
                        //nextState = new ClaimState("ZIPORDER");
                        nextState = new ClaimState("ZIPISSUE");
                    }
                    else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) &&
                             (!ServiceSheet4Save.ZipClaim.HasValue || !ServiceSheet4Save.ZipClaim.Value))
                    {

                        nextState = new ClaimState("TECHPROCESSED");
                        //Сначала сохраняем промежуточный статус
                        SaveStateStep(nextState.Id);
                        saveStateInfo = false;
                        nextState = new ClaimState("SERVADMSETWAIT");
                    }
                }
                else
                {
                    descr = $"{Descr}";
                    nextState = new ClaimState("TECHNOCONTACT");
                    //Сначала сохраняем промежуточный статус
                    SaveStateStep(nextState.Id, descr);
                    saveStateInfo = false;
                    nextState = new ClaimState("SERVADMSETWAIT");
                    Clear(specialist: true);
                }
                ////}
                ////else if (ServiceSheet4Save.NoTechWork)
                ////{
                ////    nextState = new ClaimState("NEW");
                ////    //Очищаем выбранного специалиста так как статус заявки поменялся
                ////    Clear(specialist: true);
                ////}
            }
            else if (currState.SysName.ToUpper().Equals("SERVADMSETWAIT"))
            {
                goNext = true;
                saveClaim = true;
                nextState = new ClaimState("SERVADMSET");
                sendNote = true;
                noteTo = new[] { ServiceRole.CurSpecialist };
                noteText = $@"Вам назначена заявка №%ID% %LINK%";
                noteSubject = $"[Заявка №%ID%] Вам назначена заявка";
            }
            else if (currState.SysName.ToUpper().Equals("SERVADMSET"))
            {
                goNext = true;
                if (confirm)
                {
                    nextState = new ClaimState("SRVADMWORK");
                    CurAdminSid = CurUserAdSid;
                    SpecialistSid = CurUserAdSid;
                }
                else
                {
                    descr = $"Отклонено\r\n{Descr}";
                    nextState = new ClaimState("SERVADMSETWAIT");
                    //Очищаем выбранного специалиста так как статус заявки поменялся
                    Clear(specialist: true, admin: true);
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurManager };
                    noteText = $@"Отклонено назначение заявки №%ID% %LINK%";
                    noteSubject = $"[Заявка №%ID%] Отклонено назначение СА";
                }
            }
            else if (currState.SysName.ToUpper().Equals("SRVADMWORK"))
            {
                goNext = true;
                saveClaim = true;
                ServiceIssue4Save.IdClaim = Id;
                ServiceIssue4Save.Descr = Descr;
                ServiceIssue4Save.SpecialistSid = SpecialistSid;
                ServiceIssue4Save.CurUserAdSid = CurUserAdSid;
                int serviceIssueId = ServiceIssue4Save.Save();
                CurServiceIssueId = serviceIssueId; //Устанавливает текущий заявку на выезд
                WorkType wt = new WorkType();
                if (IdWorkType.HasValue) wt = new WorkType(IdWorkType.Value);
                descr =
                    $"Установлен тип работ {wt.Name}\r\nНазначен специалист {AdHelper.GetUserBySid(SpecialistSid).FullName}\r\nДата выезда {ServiceIssue4Save.DatePlan:dd.MM.yyyy}\r\n{Descr}";
                nextState = new ClaimState("SRVENGSET");
                CurEngeneerSid = SpecialistSid;
                sendNote = true;
                noteTo = new[] { ServiceRole.CurSpecialist };
                noteText = $@"Вам назначена заявка №%ID% %LINK%";
                noteSubject = $"[Заявка №%ID%] Вам назначена заявка";
            }
            else if (currState.SysName.ToUpper().Equals("SERVENGSETWAIT"))
            {
                goNext = true;
                saveClaim = true;
                nextState = new ClaimState("SRVENGSET");
            }
            else if (currState.SysName.ToUpper().Equals("SRVENGSET"))
            {
                goNext = true;
                saveClaim = true;
                if (confirm)
                {
                    nextState = new ClaimState("SRVENGGET");
                    //Сначала сохраняем промежуточный статус
                    //SaveStateStep(nextState.Id);
                    saveStateInfo = false;
                    //nextState = new ClaimState("SERVENGOUTWAIT");
                    CurEngeneerSid = CurUserAdSid;
                    SpecialistSid = CurUserAdSid;
                }
                else
                {
                    descr = $"Отклонено\r\n{Descr}";
                    nextState = new ClaimState("SRVENGCANCEL");
                    //Сначала сохраняем промежуточный статус
                    SaveStateStep(nextState.Id, descr);
                    saveStateInfo = false;
                    nextState = new ClaimState("SRVADMWORK");
                    Clear(specialist: true, engeneer: true);
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurAdmin };
                    noteText = $@"Отклонено назначение заявки №%ID% %LINK%";
                    noteSubject = $"[Заявка №%ID%] Отклонено назначение СИ";
                }
            }
            else if (currState.SysName.ToUpper().Equals("SRVENGGET"))
            {
                goNext = true;
                saveClaim = true;
                nextState = new ClaimState("SRVENGWENT");
            }
            else if (currState.SysName.ToUpper().Equals("SRVENGWENT"))
            {
                goNext = true;
                saveClaim = true;
                nextState = new ClaimState("SRVENGWORK");
            }
            else if (currState.SysName.ToUpper().Equals("SRVENGWORK"))
            {
                goNext = true;
                saveClaim = true;
                ServiceSheet4Save.IdClaim = Id;
                if (ServiceSheet4Save == null || ServiceSheet4Save.IdClaim == 0)
                {
                    throw new ArgumentException("Сервисный лист отсутствует. Операция не завершена!");
                }

                var cl = new Claim(Id);

                if (IsNullOrEmpty(ServiceSheet4Save.CurUserAdSid)) ServiceSheet4Save.CurUserAdSid = CurUserAdSid;
                if (IsNullOrEmpty(ServiceSheet4Save.EngeneerSid)) ServiceSheet4Save.EngeneerSid = CurUserAdSid;
                ServiceSheet4Save.AdminSid = cl.CurAdminSid;
                ServiceSheet4Save.IdServiceIssue = cl.CurServiceIssueId ?? -1;
                ServiceSheet4Save.Save("SRVENGWORK");

                bool hasNotInstalled = GetOrderedZipItemList(Id, ServiceSheet4Save.Id).Any(x => !x.Installed);

                if (ServiceSheet4Save.ProcessEnabled && ServiceSheet4Save.DeviceEnabled)
                {
                    //Если есть хоть один не установленный ЗИП 
                    if (hasNotInstalled)
                    {
                        nextState = new ClaimState("ZIPISSUE");
                    }
                    else
                    {
                        nextState = new ClaimState("DONE");
                    }
                }
                else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) &&
                         ServiceSheet4Save.ZipClaim.HasValue &&
                         ServiceSheet4Save.ZipClaim.Value)
                {
                    nextState = new ClaimState("ZIPISSUE");
                }
                else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) &&
                         (!ServiceSheet4Save.ZipClaim.HasValue || !ServiceSheet4Save.ZipClaim.Value))
                {

                    //Если есть хоть один не установленный ЗИП 
                    if (hasNotInstalled)
                    {
                        nextState = new ClaimState("ZIPISSUE");
                    }
                    else
                    {
                        nextState = new ClaimState("SERVADMSET");
                        SpecialistSid = CurAdminSid;
                        sendNote = true;
                        noteTo = new[] { ServiceRole.CurAdmin };
                        noteText =
                            $@"Инженер не восстановил работу аппарата по заявке №%ID% %LINK%.\r\Комментарий:{
                                ServiceSheet4Save.Descr}";
                        noteSubject = $"[Заявка №%ID%] Работа не восстановлена";
                    }
                }
            }
            else if (currState.SysName.ToUpper().Equals("ZIPISSUE"))
            {
                var lastServiceSheet = GetLastServiceSheet();
                var curCl = new Claim(Id);
                goNext = true;
                saveClaim = true;
                var notInstalledList = GetOrderedZipItemList(Id, lastServiceSheet.Id).Where(x => !x.Installed);

                //Если есть заказаный ЗИП то значит заявку надо продолжить
                if (lastServiceSheet.ZipClaim.HasValue && lastServiceSheet.ZipClaim.Value)
                {
                    if (!lastServiceSheet.GetIssuedZipItemList().Any())
                    {
                        throw new Exception("Необходимо заполнить список ЗИП. Сервисный лист не был передан.");
                    }
                    else
                    {
                        ServiceSheetZipItem.SaveOrderedZipItemsCopyFromIssued(lastServiceSheet.Id, CurUserAdSid);

                        if (notInstalledList.Any())
                            //Если есть не установленный ЗИП то сохраняем его
                        {
                            ServiceSheetZipItem.NotInstalledSaveList(notInstalledList.Select(x => x.Id).ToArray(),
                                lastServiceSheet.Id, CurUserAdSid);
                        }

                        SpecialistSid = CurUserAdSid;
                        nextState = new ClaimState("ZIPCHECK");

                        if (nextState.SysName.Equals("ZIPCHECK"))
                        {
                            sendNote = true;
                            noteTo = new[] {ServiceRole.AllTech};
                            noteText = $@"Необходимо заказать ЗИП по заявке №%ID% %LINK%";
                            noteSubject = $"[Заявка №%ID%] Необходимо заказать ЗИП";
                        }
                    }
                }
                else
                {
                    if (notInstalledList.Any())
                    //Если есть не установленный ЗИП
                    {
                        ServiceSheetZipItem.NotInstalledSaveList(notInstalledList.Select(x=>x.Id).ToArray(), lastServiceSheet.Id, CurUserAdSid);
                        Descr = $"Не весь ЗИП установлен";
                        if (lastServiceSheet.ProcessEnabled && lastServiceSheet.DeviceEnabled)
                        {
                            nextState = new ClaimState("DONE");
                        }
                        else
                        {
                            nextState = new ClaimState("SERVADMSET");
                        }
                        
                        SpecialistSid = curCl.CurAdminSid;
                        sendNote = true;
                        noteTo = new[] { ServiceRole.CurAdmin };
                        noteText = $@"Не весь ЗИП установлен №%ID% %LINK%";
                        noteSubject = $"[Заявка №%ID%] Не весь ЗИП установлен";
                    }
                    else
                    {
                        nextState = new ClaimState("DONE");
                        sendNote = true;
                        noteTo = new[] { ServiceRole.CurAdmin };
                        noteText = $@"ЗИП Установлен по заявке №%ID% %LINK%";
                        noteSubject = $"[Заявка №%ID%] ЗИП установлен";
                    }
                }
            }
            else if (currState.SysName.ToUpper().Equals("ZIPCHECK"))
            {
                //В настоящий момент по этому статусу происходит заказ ЗИП специалистом Тех поддержки
                if (!GetClaimCurrentState(Id).SysName.Equals("ZIPCHECKINWORK")) //На всякий случай проверяем еще раз
                {
                    goNext = true;
                    saveClaim = true;
                    CurTechSid = CurUserAdSid;
                    SpecialistSid = CurUserAdSid;
                    nextState = new ClaimState("ZIPCHECKINWORK");
                }
                else
                {
                    throw new ArgumentException("Проверка ЗИП уже в работе.");
                }
            }

            else if (currState.SysName.ToUpper().Equals("ZIPCHECKINWORK"))
            {
                var curCl = new Claim(Id);
                if (curCl.SpecialistSid != CurUserAdSid && curCl.CurTechSid != CurUserAdSid)
                    throw new ArgumentException("Проверка ЗИП уже в работе.");
                goNext = true;
                saveClaim = true;

                //Если красная линия или Гарантийный аппарат то на утверждение
                if (curCl.Contract.ContractZipTypeSysName == "LESSZIP" ||
                    (curCl.Device.HasGuarantee.HasValue && curCl.Device.HasGuarantee.Value))
                {
                    nextState = new ClaimState("ZIPCONFIRM");

                }
                else
                {
                    ZipClaim.CreateClaimUnitWork(Id, CurUserAdSid);
                    nextState = new ClaimState("ZIPORDERED");

                    sendNote = true;
                    noteTo = new[] { ServiceRole.ZipConfirm };
                    noteText = $@"Необходимо утвердить список ЗИП в заявке №%ID% %LINK%";
                    noteSubject = $"[Заявка №%ID%] Утверждение список ЗИП";
                }
            }
            else if (currState.SysName.ToUpper().Equals("ZIPCONFIRM"))
            {
                goNext = true;
                saveClaim = true;
                if (confirm)
                {
                    ZipClaim.CreateClaimUnitWork(Id, CurUserAdSid);
                    nextState = new ClaimState("ZIPORDERED");
                }
                else
                {
                    descr = $"Отклонено\r\n{Descr}";
                    nextState = new ClaimState("ZIPCONFIRMCANCEL");
                    //Сначала сохраняем промежуточный статус
                    SaveStateStep(nextState.Id, descr);
                    saveStateInfo = false;
                    nextState = new ClaimState("ZIPCHECKINWORK");
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurTech };
                    noteText = $@"Отклонен список ЗИП в заявке №%ID% %LINK%";
                    noteSubject = $"[Заявка №%ID%] Отклонен список ЗИП";
                }
            }
            else if (currState.SysName.ToUpper().Equals("ZIPORDERED"))
            {
                goNext = true;
                saveClaim = true;
                if (!confirm)
                {
                    descr = $"Отказ в закупке ЗИП\r\n{Descr}";
                    nextState = new ClaimState("ZIPBUYCANCEL");
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurAdmin };
                    noteText = $@"Отказ в закупке ЗИП №%ID% %LINK%";
                    noteSubject = $"[Заявка №%ID%] Отказ в закупке ЗИП";
                }
                else
                {
                    nextState = new ClaimState("SERVADMSET");
                    var curCl = new Claim(Id, false);
                    SpecialistSid = curCl.CurAdminSid;
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurAdmin };
                    noteText = $@"Вам назначена заявка №%ID% %LINK%";
                    noteSubject = $"[Заявка №%ID%] Вам назначена заявка";
                }
            }
            else if (currState.SysName.ToUpper().Equals("DONE"))
            {
                //Если есть незакрытые СЛ то заявку не закрываем
                if (!GetClaimServiceSheetList(Id, false).Any())
                {
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("END");
                    sendNote = true;
                    noteTo = new[] {ServiceRole.CurManager};
                    noteText = $@"Заявка №%ID% закрыта  %LINK%";
                    noteSubject = $"[Заявка №%ID%] Заявка закрыта";
                }
            }
            else if (currState.SysName.ToUpper().Equals("ZIPCL-CANCELED"))
            {
                goNext = true;
                saveClaim = true;
                descr = Descr;
                nextState = new ClaimState("ZIPBUYCANCEL");
            }
            else if (currState.SysName.ToUpper().Equals("ZIPCL-ETPREP-GET") ||
                     currState.SysName.ToUpper().Equals("ZIPCL-ETSHIP-GET"))
            {
                goNext = true;
                saveClaim = true;
                nextState = new ClaimState("SERVADMSET");
                var curCl = new Claim(Id, false);
                SpecialistSid = curCl.CurAdminSid;
                sendNote = true;
                noteTo = new[] { ServiceRole.CurAdmin };
                noteText = $@"Вам назначена заявка №%ID% %LINK%";
                noteSubject = $"[Заявка №%ID%] Вам назначена заявка";
            }
            else if (currState.SysName.ToUpper().Equals("ZIPCL-DELIV"))
            {
                goNext = true;
                saveClaim = true;
                nextState = new ClaimState("SERVADMSET");
                SpecialistSid = CurAdminSid;
                sendNote = true;
                noteTo = new[] { ServiceRole.CurAdmin };
                noteText = $@"Вам назначена заявка №%ID% %LINK%";
                noteSubject = $"[Заявка №%ID%] Вам назначена заявка";
            }
            else
            {
                nextState = currState;
            }

            if (saveClaim) Save();
            if (goNext) SaveStateStep(nextState.Id, descr, saveStateInfo);
            //SaveStateStep(nextState.Id);
            if (sendNote)
            {
                SendNote(noteSubject, noteText, null, noteTo);

                ////Замена по маске
                //noteSubject = noteSubject.Replace("%ID%", Id.ToString());

                //noteText = noteText.Replace("%ID%", Id.ToString());
                //string link = $"{ConfigurationManager.AppSettings["ServiceUrl"]}/Claim/Index/{Id}";
                //noteText = noteText.Replace("%LINK%", $@"<p><a href=""{link}"">{link}</a></p>");

                //SendMailTo(noteText, noteSubject, noteTo);
            }
        }
Beispiel #4
0
        private void FillSelf(DataRow row, bool loadObj = true, bool loadNames = false)
        {
            Sid = Db.DbHelper.GetValueString(row, "sid");
            Id = Db.DbHelper.GetValueIntOrDefault(row, "id");
            IdContractor = Db.DbHelper.GetValueIntOrDefault(row, "id_contractor");
            IdContract = Db.DbHelper.GetValueIntOrDefault(row, "id_contract");
            IdDevice = Db.DbHelper.GetValueIntOrDefault(row, "id_device");
            ContractorName = Db.DbHelper.GetValueString(row, "contractor_name");
            ContractName = Db.DbHelper.GetValueString(row, "contract_name");
            DeviceName = Db.DbHelper.GetValueString(row, "device_name");
            IdWorkType = Db.DbHelper.GetValueIntOrNull(row, "id_work_type");
            SpecialistSid = Db.DbHelper.GetValueString(row, "specialist_sid");
            DateCreate = Db.DbHelper.GetValueDateTimeOrDefault(row, "date_create");
            DateStateChange = Db.DbHelper.GetValueDateTimeOrDefault(row, "date_state_change");
            ClientSdNum = Db.DbHelper.GetValueString(row, "client_sd_num");
            ChangerSid = Db.DbHelper.GetValueString(row, "changer_sid");
            CurEngeneerSid = Db.DbHelper.GetValueString(row, "cur_engeneer_sid");
            CurAdminSid = Db.DbHelper.GetValueString(row, "cur_admin_sid");
            CurTechSid = Db.DbHelper.GetValueString(row, "cur_tech_sid");
            CurManagerSid = Db.DbHelper.GetValueString(row, "cur_manager_sid");
            CurServiceIssueId = Db.DbHelper.GetValueIntOrNull(row, "cur_service_issue_id");
            IdServiceCame = Db.DbHelper.GetValueIntOrNull(row, "id_service_came");
            IdState = Db.DbHelper.GetValueIntOrDefault(row, "id_claim_state");

            Contractor = new Contractor() { Id = Db.DbHelper.GetValueIntOrDefault(row, "id_contractor"), Name = Db.DbHelper.GetValueString(row, "contractor_name"), FullName = Db.DbHelper.GetValueString(row, "contractor_full_name") };
            Contract = new Contract() { Id = Db.DbHelper.GetValueIntOrDefault(row, "id_contract"), Number = Db.DbHelper.GetValueString(row, "contract_num") };
            Device = new Device() { Id = Db.DbHelper.GetValueIntOrDefault(row, "id_device"), FullName = Db.DbHelper.GetValueString(row, "device_name"), SerialNum = Db.DbHelper.GetValueString(row, "device_serial_num"), ObjectName = Db.DbHelper.GetValueString(row, "object_name"), Address = Db.DbHelper.GetValueString(row, "address"), ContactName = Db.DbHelper.GetValueString(row, "contact_name"), Descr = Db.DbHelper.GetValueString(row, "c2d_comment"), CityName = Db.DbHelper.GetValueString(row, "city_name") };

            Manager = new EmployeeSm() { AdSid = CurManagerSid , DisplayName = Db.DbHelper.GetValueString(row, "manager_name") };
            Admin = new EmployeeSm() { AdSid = CurAdminSid, DisplayName = Db.DbHelper.GetValueString(row, "admin_name") };
            Tech = new EmployeeSm() { AdSid = CurTechSid, DisplayName = Db.DbHelper.GetValueString(row, "tech_name") };
            Engeneer = new EmployeeSm() { AdSid = CurEngeneerSid, DisplayName = Db.DbHelper.GetValueString(row, "engeneer_name") };
            Specialist = new EmployeeSm() { AdSid = SpecialistSid, DisplayName = Db.DbHelper.GetValueString(row, "specialist_name") };
            Changer = new EmployeeSm() { AdSid = ChangerSid, DisplayName = Db.DbHelper.GetValueString(row, "specialist_name") };

            if (IdWorkType.HasValue && IdWorkType.Value > 0)
                WorkType = new WorkType() {Id= IdWorkType.Value, Name = Db.DbHelper.GetValueString(row, "work_type_name"), SysName = Db.DbHelper.GetValueString(row, "work_type_sys_name"), ZipInstall = Db.DbHelper.GetValueBool(row, "work_type_zip_install"), ZipOrder = Db.DbHelper.GetValueBool(row, "work_type_zip_order") };

            State = new ClaimState() {Id=IdState, Name = Db.DbHelper.GetValueString(row, "claim_state_name"), SysName = Db.DbHelper.GetValueString(row, "claim_state_sys_name"), BackgroundColor = Db.DbHelper.GetValueString(row, "claim_state_background_color"), ForegroundColor = Db.DbHelper.GetValueString(row, "claim_state_foreground_color") };

            if (loadObj)
            {
                Contractor = new Contractor(Contractor.Id);
                Contract = new Contract(Contract.Id);
                Device = new Device(Device.Id, Contract.Id);
                if (IdWorkType.HasValue && IdWorkType.Value > 0) WorkType = new WorkType(IdWorkType.Value);
                State = new ClaimState(Db.DbHelper.GetValueIntOrDefault(row, "id_claim_state"));
            }

            if (loadNames)
            {
                Manager = new EmployeeSm(CurManagerSid);
                Admin = new EmployeeSm(CurAdminSid);
                Tech = new EmployeeSm(CurTechSid);
                Engeneer = new EmployeeSm(CurEngeneerSid);
                Specialist = new EmployeeSm(SpecialistSid);
                Changer = new EmployeeSm(ChangerSid);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Список доступных для назначения специалистов для заявки в текущем статусе
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static IEnumerable<KeyValuePair<string, string>> GetSpecialistList(int idClaim)
        {
            var list = new List<KeyValuePair<string, string>>();

            var state = GetClaimCurrentState(idClaim);
            switch (state.SysName)
            {
                case "NEWADD":
                    var wtId = new Claim(idClaim).IdWorkType;
                    if (!wtId.HasValue) throw new ArgumentException("Невозможно выбрать список специалистов. Тип работ не указан.");
                    var wtSysName = new WorkType(wtId.Value).SysName;

                    switch (wtSysName)
                    {
                        case "ДНО":
                        case "НПР":
                        case "ТЭО":
                        case "УТЗ":
                            list = AdHelper.GetUserListByAdGroup(AdGroup.ServiceTech).ToList();
                            break;
                        case "РТО":
                        case "МТС":
                        case "УРМ":
                        case "ЗРМ":
                        case "МДО":
                        case "ИПТ":
                        case "РЗРД":
                        case "ЗНЗЧ":
                            list = AdHelper.GetUserListByAdGroup(AdGroup.ServiceAdmin).ToList();
                            break;
                    }
                    break;
                case "SERVADMSETWAIT":
                    list = AdHelper.GetUserListByAdGroup(AdGroup.ServiceAdmin).ToList();
                    break;
                case "SERVENGSETWAIT":
                case "SRVADMWORK":
                    list = AdHelper.GetUserListByAdGroup(AdGroup.ServiceEngeneer).ToList();
                    break;
            }


            return list;
        }
Beispiel #6
0
        public static IEnumerable<KeyValuePair<string, string>> GetWorkTypeSpecialistSelectionList(int idWorkType)
        {
            var list = new List<KeyValuePair<string, string>>();
            var wtSysName = new WorkType(idWorkType).SysName;

            switch (wtSysName)
            {
                case "ДНО":
                case "НПР":
                case "ТЭО":
                case "УТЗ":
                    list = AdHelper.GetUserListByAdGroup(AdGroup.ServiceTech).ToList();
                    break;
                case "РТО":
                case "МТС":
                case "УРМ":
                case "ЗРМ":
                case "МДО":
                case "ИПТ":
                case "РЗРД":
                case "ЗНЗЧ":
                    list = AdHelper.GetUserListByAdGroup(AdGroup.ServiceAdmin).ToList();
                    break;
            }

            return list;
        }
Beispiel #7
0
        /// <summary>
        /// Перевод заявки на следующую стадию
        /// </summary>
        /// <param name="confirm">Подтвердить или отклонить назначение заявки</param>
        public void Go(bool confirm = true)
        {
            if (Id <= 0) throw new ArgumentException("Невозможно предать заявку. Не указан ID заявки.");

            //Save();
            string descr = Empty;
            var currState = GetClaimCurrentState(Id);
            var nextState = new ClaimState();
            bool saveStateInfo = true;
            bool sendNote = false;
            ServiceRole[] noteTo = { ServiceRole.CurSpecialist };
            string noteText = Empty;
            string noteSubject = Empty;
            bool goNext = false;
            bool saveClaim = false;//Метод вызывается из удаленных программ и поэтому не всегда нухно схранять статус

            switch (currState.SysName.ToUpper())//Текущий статус
            {
                //case "NEW":
                //    nextState = new ClaimState("NEWADD");
                //    break;
                case "NEW":
                    goNext = true;
                    saveClaim = true;
                    int? wtId = null;
                    if (!IdWorkType.HasValue)
                    {
                        wtId = new Claim(Id).IdWorkType;
                        if (!wtId.HasValue) throw new ArgumentException("Невозможно определить следующий статус. Тип работ заявки не указан.");
                    }
                    else
                    {
                        wtId = IdWorkType;
                    }
                    var wtSysName = new WorkType(wtId.Value).SysName;
                    descr = $"{Descr}\r\nУстановлен тип работ {wtSysName}\r\nНазначен специалист {AdHelper.GetUserBySid(SpecialistSid).FullName}";

                    switch (wtSysName)
                    {
                        case "ДНО":
                        case "НПР":
                        case "ТЭО":
                        case "УТЗ":
                            nextState = new ClaimState("TECHSET");
                            CurTechSid = SpecialistSid;
                            break;
                        case "РТО":
                        case "МТС":
                        case "УРМ":
                        case "ЗРМ":
                        case "МДО":
                        case "ИПТ":
                        case "РЗРД":
                        case "ЗНЗЧ":
                            nextState = new ClaimState("SERVADMSET");
                            CurAdminSid = SpecialistSid;
                            break;
                    }
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurSpecialist };
                    noteText = $@"Вам назначена заявка №%ID% %LINK%";
                    noteSubject = $"Назначена заявка №%ID%";
                    
                    break;
                case "TECHSET":
                    goNext = true;
                    saveClaim = true;
                    if (confirm)
                    {
                        nextState = new ClaimState("TECHWORK");
                    }
                    else
                    {
                        descr = $"Отклонено\r\n{Descr}";
                        nextState = new ClaimState("NEW");
                        //Очищаем выбранного специалиста так как статус заявки поменялся
                        Clear(specialist: true, workType: true, tech: true);
                        sendNote = true;
                        noteTo = new[] { ServiceRole.CurAdmin };
                        noteText = $@"Отклонено назначение заявки №%ID% %LINK%";
                        noteSubject = $"Отклонено назначение заявки №%ID%";
                    }
                    break;
                case "TECHWORK":
                    goNext = true;
                    saveClaim = true;
                    if (confirm)
                    {
                        ServiceSheet4Save.IdClaim = Id;
                        if (ServiceSheet4Save == null || ServiceSheet4Save.IdClaim == 0)
                        {
                            throw new ArgumentException("Сервисный лист отсутствует. Операция не завершена!");
                        }

                        ////if (!ServiceSheet4Save.NoTechWork)
                        ////{
                        ServiceSheet4Save.CurUserAdSid = CurUserAdSid;
                        ServiceSheet4Save.EngeneerSid = CurUserAdSid;
                        ServiceSheet4Save.IdServiceIssue = -999;
                        ServiceSheet4Save.Save("TECHWORK");
                        if (ServiceSheet4Save.ProcessEnabled && ServiceSheet4Save.DeviceEnabled)
                        {
                            nextState = new ClaimState("TECHDONE");
                            //Сначала сохраняем промежуточный статус
                            SaveStateStep(nextState.Id);
                            saveStateInfo = false;
                            nextState = new ClaimState("DONE");
                        }
                        else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) && ServiceSheet4Save.ZipClaim.HasValue && ServiceSheet4Save.ZipClaim.Value)
                        {
                            nextState = new ClaimState("TECHPROCESSED");
                            //Сначала сохраняем промежуточный статус
                            SaveStateStep(nextState.Id);
                            saveStateInfo = false;
                            nextState = new ClaimState("ZIPORDER");

                        }
                        else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) && (!ServiceSheet4Save.ZipClaim.HasValue || !ServiceSheet4Save.ZipClaim.Value))
                        {

                            nextState = new ClaimState("TECHNODONE");
                            //Сначала сохраняем промежуточный статус
                            SaveStateStep(nextState.Id);
                            saveStateInfo = false;
                            nextState = new ClaimState("SERVADMSETWAIT");
                        }
                    }
                    else
                    {
                        descr = $"{Descr}";
                        nextState = new ClaimState("TECHNOCONTACT");
                        //Сначала сохраняем промежуточный статус
                        SaveStateStep(nextState.Id, descr);
                        saveStateInfo = false;
                        nextState = new ClaimState("SERVADMSETWAIT");
                        Clear(specialist: true);
                    }
                    ////}
                    ////else if (ServiceSheet4Save.NoTechWork)
                    ////{
                    ////    nextState = new ClaimState("NEW");
                    ////    //Очищаем выбранного специалиста так как статус заявки поменялся
                    ////    Clear(specialist: true);
                    ////}
                    break;
                case "SERVADMSETWAIT":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("SERVADMSET");
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurSpecialist };
                    noteText = $@"Вам назначена заявка №%ID% %LINK%";
                    noteSubject = $"Назначена заявка №%ID%";
                    break;
                case "SERVADMSET":
                    goNext = true;
                    if (confirm)
                    {
                        nextState = new ClaimState("SRVADMWORK");
                        CurAdminSid = SpecialistSid;
                    }
                    else
                    {
                        descr = $"Отклонено\r\n{Descr}";
                        nextState = new ClaimState("NEW");
                        //Очищаем выбранного специалиста так как статус заявки поменялся
                        Clear(specialist: true, admin: true);
                        sendNote = true;
                        noteTo = new[] { ServiceRole.CurManager };
                        noteText = $@"Отклонено назначение заявки №%ID% %LINK%";
                        noteSubject = $"Отклонено назначение заявки №%ID%";
                    }
                    break;
                case "SRVADMWORK":
                    goNext = true;
                    saveClaim = true;
                    ServiceIssue4Save.IdClaim = Id;
                    ServiceIssue4Save.Descr = Descr;
                    ServiceIssue4Save.SpecialistSid = SpecialistSid;
                    ServiceIssue4Save.CurUserAdSid = CurUserAdSid;
                    int serviceIssueId = ServiceIssue4Save.Save();
                    CurServiceIssueId = serviceIssueId;//Устанавливает текущий заявку на выезд
                    descr = $"Назначен специалист {AdHelper.GetUserBySid(SpecialistSid).FullName}\r\nДата выезда {ServiceIssue4Save.DatePlan:dd.MM.yyyy}\r\n{Descr}";
                    nextState = new ClaimState("SRVENGSET");
                    CurEngeneerSid = SpecialistSid;
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurSpecialist };
                    noteText = $@"Вам назначена заявка №%ID% %LINK%";
                    noteSubject = $"Назначена заявка №%ID%";
                    break;
                case "SERVENGSETWAIT":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("SRVENGSET");
                    break;
                case "SRVENGSET":
                    goNext = true;
                    saveClaim = true;
                    if (confirm)
                    {
                        nextState = new ClaimState("SRVENGGET");
                        //Сначала сохраняем промежуточный статус
                        SaveStateStep(nextState.Id);
                        saveStateInfo = false;
                        nextState = new ClaimState("SERVENGOUTWAIT");
                    }
                    else
                    {
                        descr = $"Отклонено\r\n{Descr}";
                        nextState = new ClaimState("SRVENGCANCEL");
                        //Сначала сохраняем промежуточный статус
                        SaveStateStep(nextState.Id, descr);
                        saveStateInfo = false;
                        nextState = new ClaimState("SRVADMWORK");
                        Clear(specialist: true, engeneer: true);
                        sendNote = true;
                        noteTo = new[] { ServiceRole.CurAdmin };
                        noteText = $@"Отклонено назначение заявки №%ID% %LINK%";
                        noteSubject = $"Отклонено назначение заявки №%ID%";
                    }
                    break;
                case "SERVENGOUTWAIT":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("SRVENGWENT");
                    break;
                case "SRVENGWENT":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("SRVENGWORK");
                    break;
                case "SRVENGWORK":
                    goNext = true;
                    saveClaim = true;
                    ServiceSheet4Save.IdClaim = Id;
                    if (ServiceSheet4Save == null || ServiceSheet4Save.IdClaim == 0)
                    { throw new ArgumentException("Сервисный лист отсутствует. Операция не завершена!"); }

                    var cl = new Claim(Id);

                    if (IsNullOrEmpty(ServiceSheet4Save.CurUserAdSid)) ServiceSheet4Save.CurUserAdSid = CurUserAdSid;
                    if (IsNullOrEmpty(ServiceSheet4Save.EngeneerSid))ServiceSheet4Save.EngeneerSid = CurUserAdSid;
                    ServiceSheet4Save.IdServiceIssue = cl.CurServiceIssueId ?? -1;
                    ServiceSheet4Save.Save("SRVENGWORK");

                    if (ServiceSheet4Save.ProcessEnabled && ServiceSheet4Save.DeviceEnabled)
                    {
                        nextState = new ClaimState("DONE");

                    }
                    else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) && ServiceSheet4Save.ZipClaim.HasValue &&
                             ServiceSheet4Save.ZipClaim.Value)
                    {
                        nextState = new ClaimState("ZIPISSUE");
                    }
                    else if ((!ServiceSheet4Save.ProcessEnabled || !ServiceSheet4Save.DeviceEnabled) && (!ServiceSheet4Save.ZipClaim.HasValue || !ServiceSheet4Save.ZipClaim.Value))
                    {
                        nextState = new ClaimState("ZIPISSUE");
                    }

                    
                    break;
                case "ZIPISSUE":

                    if (!GetLastServiceSheet().GetZipItemList().Any()) throw new Exception("Необходимо заполнить список ЗИП. Сервисный лист не был передан.");
                    goNext = true;
                    saveClaim = true;
                    
                    SpecialistSid = CurUserAdSid;
                    nextState = new ClaimState("ZIPORDER");

                    if (nextState.SysName.Equals("ZIPORDER"))
                    {
                        sendNote = true;
                        noteTo = new[] { ServiceRole.AllTech };
                        noteText = $@"Необходимо заказать ЗИП по заявке №%ID% %LINK%";
                        noteSubject = $"Необходимо заказать ЗИП по заявке №%ID%";
                    }
                    break;
                case "ZIPORDER"://В настоящий момент по этому статусу происходит заказ ЗИП специалистом Тех поддержки
                    if (!GetClaimCurrentState(Id).SysName.Equals("ZIPCLINWORK"))//На всякий случай проверяем еще раз
                    {
                        goNext = true;
                        saveClaim = true;
                        CurTechSid = CurUserAdSid;
                        SpecialistSid = CurUserAdSid;
                        nextState = new ClaimState("ZIPCLINWORK");
                    }
                    else
                    {
                        throw new ArgumentException("Заказ уже в работе.");
                    }
                    break;
                case "ZIPCLINWORK":
                    var curCl = new Claim(Id);
                    if (curCl.SpecialistSid != CurUserAdSid && curCl.CurTechSid != CurUserAdSid) throw new ArgumentException("Заказ уже в работе.");
                    break;
                case "ZIPCHECK":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("ZIPCHECKED");
                    break;
                case "ZIPCHECKED":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("ZIPCONFIRMED");
                    break;
                case "ZIPCONFIRMED":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("ZIPORDERED");
                    break;
                case "ZIPORDERED":
                    goNext = true;
                    saveClaim = true;
                    if (!confirm)
                    {
                        nextState = new ClaimState("ZIPBUYCANCEL");
                        break;
                    }
                    else
                    {
                        nextState = new ClaimState("ZIPINSTWAIT");
                        //Сначала сохраняем промежуточный статус
                        SaveStateStep(nextState.Id);
                        saveStateInfo = false;
                        nextState = new ClaimState("SERVENGSETWAIT");
                        break;
                    }
                case "DONE":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("END");
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurManager };
                    noteText = $@"Заявка №%ID% закрыта  %LINK%";
                    noteSubject = $"Заявка №%ID% закрыта";
                    break;
                case "ZIPCL-CANCELED":
                    goNext = true;
                    saveClaim = true;
                    descr = Descr;
                    nextState = new ClaimState("ZIPBUYCANCEL");
                    break;
                case "ZIPCL-ETPREP-GET":
                case "ZIPCL-ETSHIP-GET":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("SERVADMSET");
                    SpecialistSid = CurAdminSid;
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurAdmin };
                    noteText = $@"Вам назначена заявка №%ID% %LINK%";
                    noteSubject = $"Назначена заявка №%ID%";
                    break;
                case "ZIPCL-DELIV":
                    goNext = true;
                    saveClaim = true;
                    nextState = new ClaimState("SERVADMSET");
                    SpecialistSid = CurAdminSid;
                    sendNote = true;
                    noteTo = new[] { ServiceRole.CurAdmin };
                    noteText = $@"Вам назначена заявка №%ID% %LINK%";
                    noteSubject = $"Назначена заявка №%ID%";
                    break;
                default:
                    nextState = currState;
                    break;
            }
            if (saveClaim) Save();
            if (goNext)SaveStateStep(nextState.Id, descr, saveStateInfo);
            //SaveStateStep(nextState.Id);
            if (sendNote)
            {
                SendNote(noteSubject, noteText, noteTo);

                ////Замена по маске
                //noteSubject = noteSubject.Replace("%ID%", Id.ToString());

                //noteText = noteText.Replace("%ID%", Id.ToString());
                //string link = $"{ConfigurationManager.AppSettings["ServiceUrl"]}/Claim/Index/{Id}";
                //noteText = noteText.Replace("%LINK%", $@"<p><a href=""{link}"">{link}</a></p>");

                //SendMailTo(noteText, noteSubject, noteTo);
            }
        }
Beispiel #8
0
        private void FillSelf(DataRow row, bool loadObj = true)
        {
            Sid = Db.DbHelper.GetValueString(row, "sid");
            Id = Db.DbHelper.GetValueIntOrDefault(row, "id");
            IdContractor = Db.DbHelper.GetValueIntOrDefault(row, "id_contractor");
            IdContract = Db.DbHelper.GetValueIntOrDefault(row, "id_contract");
            IdDevice = Db.DbHelper.GetValueIntOrDefault(row, "id_device");
            ContractorName = Db.DbHelper.GetValueString(row, "contractor_name");
            ContractName = Db.DbHelper.GetValueString(row, "contract_name");
            DeviceName = Db.DbHelper.GetValueString(row, "device_name");
            //Admin = new EmployeeSm(Db.DbHelper.GetValueIntOrDefault(row, "id_admin"));
            //Engeneer = new EmployeeSm(Db.DbHelper.GetValueIntOrDefault(row, "id_engeneer"));

            IdWorkType = Db.DbHelper.GetValueIntOrNull(row, "id_work_type");
            SpecialistSid = Db.DbHelper.GetValueString(row, "specialist_sid");
            DateCreate = Db.DbHelper.GetValueDateTimeOrDefault(row, "date_create");
            DateStateChange = Db.DbHelper.GetValueDateTimeOrDefault(row, "date_state_change");
            ClientSdNum = Db.DbHelper.GetValueString(row, "client_sd_num");
            ChangerSid = Db.DbHelper.GetValueString(row, "changer_sid");
            CurEngeneerSid = Db.DbHelper.GetValueString(row, "cur_engeneer_sid");
            CurAdminSid = Db.DbHelper.GetValueString(row, "cur_admin_sid");
            CurTechSid = Db.DbHelper.GetValueString(row, "cur_tech_sid");
            CurManagerSid = Db.DbHelper.GetValueString(row, "cur_manager_sid");
            CurServiceIssueId = Db.DbHelper.GetValueIntOrNull(row, "cur_service_issue_id");
            IdServiceCame = Db.DbHelper.GetValueIntOrNull(row, "id_service_came");

            if (loadObj)
            {
                if (IdWorkType.HasValue && IdWorkType.Value > 0) WorkType = new WorkType(IdWorkType.Value);
                Specialist = new EmployeeSm(SpecialistSid);
                State = new ClaimState(Db.DbHelper.GetValueIntOrDefault(row, "id_claim_state"));
                Contractor = new Contractor() { Id = Db.DbHelper.GetValueIntOrDefault(row, "id_contractor") };
                Contract = new Contract() { Id = Db.DbHelper.GetValueIntOrDefault(row, "id_contract") };
                Device = new Device() { Id = Db.DbHelper.GetValueIntOrDefault(row, "id_device") };
            }
        }
Beispiel #9
0
        public static ClaimState GetNext(int idClaimState, int claimId)
        {
            var currState = new ClaimState(idClaimState);

            switch (currState.SysName.ToUpper())
            {
                case "NEW":
                    return new ClaimState("NEWADD");
                case "NEWADD":
                    return new ClaimState("SET");
                case "SET":
                    var wtId = new Claim(claimId).IdWorkType;
                    if (!wtId.HasValue) throw new ArgumentException("Невозможно определить следующий статус. Тип работ не указан.");
                    var wtSysName = new WorkType(wtId.Value).SysName;
                    switch (wtSysName)
                    {
                        case "ДНО": case "НПР": case "ТЭО":case "УТЗ":
                            return new ClaimState("TECHWORK");
                        case "РТО": case "МТС": case "УРМ": case "ЗРМ":
                        case "МДО": case "ИПТ": case "РЗРД": case "ЗНЗЧ":
                            return new ClaimState("SRVADMWORK");
                    }

                    break;
                default:
                    return currState;
            }

            //var st = new ClaimState();
            //SqlParameter pIdClaim = new SqlParameter() { ParameterName = "id_claim_state", SqlValue = idClaimState, SqlDbType = SqlDbType.Int };
            //var dt = Db.Service.ExecuteQueryStoredProcedure("get_next_claim_state", pIdClaim);
            //if (dt.Rows.Count > 0)
            //{
            //    st = new ClaimState(dt.Rows[0]);
            //}

            return currState;
        }