コード例 #1
0
        public async Task <IHttpActionResult> DeleteDirServiceJobNomen(int id)
        {
            //Удаляем, если исключение "FK", то ставим пометку на удаление и сообщаем об этом клиенту
            //...

            #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

            //Получаем Куку
            System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

            // Проверяем Логин и Пароль
            Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

            if (!field.Access)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
            }

            //Изменяем строку соединения
            db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

            //Права (1 - Write, 2 - Read, 3 - No Access)
            int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirServiceJobNomens"));

            if (iRight != 1)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
            }

            //Разные Функции
            function.NumberDecimalSeparator();

            //Получам настройки
            Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

            #endregion

            #region Удаление

            try
            {
                //Получаем Sub-бы (нужны поледние 5-ть)
                int?Sub = await Task.Run(() => DirServiceJobNomenID_Sub_Find(id));

                int ID0 = 0, ID1 = 0, ID2 = 0, ID3 = 0, ID4 = 0;
                if (Sub != null && Sub > 0)
                {
                    ArrayList Subs = await Task.Run(() => DirServiceJobNomenSubFind(Sub));

                    if (Subs.Count > 0)
                    {
                        if (Subs.Count > 0)
                        {
                            ID0 = Convert.ToInt32(Subs[0]);
                        }
                        if (Subs.Count > 1)
                        {
                            ID1 = Convert.ToInt32(Subs[1]);
                        }
                        if (Subs.Count > 2)
                        {
                            ID2 = Convert.ToInt32(Subs[2]);
                        }
                        if (Subs.Count > 3)
                        {
                            ID3 = Convert.ToInt32(Subs[3]);
                        }
                        if (Subs.Count > 4)
                        {
                            ID4 = Convert.ToInt32(Subs[4]);
                        }
                    }
                }



                DirServiceJobNomen dirServiceJobNomen = await db.DirServiceJobNomens.FindAsync(id);

                if (dirServiceJobNomen == null)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg99)));
                }

                if (!dirServiceJobNomen.Del)
                {
                    // === Удаляем === === === === ===


                    #region 6. JourDisp *** *** *** *** *** *** *** *** *** *

                    Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp();
                    sysJourDisp.DirDispOperationID = 5; //Удаление записи
                    sysJourDisp.DirEmployeeID      = field.DirEmployeeID;
                    sysJourDisp.ListObjectID       = ListObjectID;
                    sysJourDisp.TableFieldID       = dirServiceJobNomen.DirServiceJobNomenID;
                    sysJourDisp.Description        = "";
                    try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { }

                    #endregion


                    //1. Удаляем
                    try
                    {
                        db.DirServiceJobNomens.Remove(dirServiceJobNomen);
                        await db.SaveChangesAsync();

                        dynamic collectionWrapper = new
                        {
                            ID  = dirServiceJobNomen.DirServiceJobNomenID,
                            ID0 = ID0,
                            ID1 = ID1,
                            ID2 = ID2,
                            ID3 = ID3,
                            ID4 = ID4,
                            Msg = Classes.Language.Sklad.Language.msg19
                        };
                        return(Ok(returnServer.Return(true, collectionWrapper)));
                    }
                    catch (Exception ex)
                    {
                        if (function.ExceptionFkExist(ex))
                        {
                            //2. Исключение - пометка на удаление
                            dirServiceJobNomen.Del = true;

                            db.Entry(dirServiceJobNomen).State = EntityState.Modified;
                            await db.SaveChangesAsync();

                            dynamic collectionWrapper = new
                            {
                                ID  = dirServiceJobNomen.DirServiceJobNomenID,
                                ID0 = ID0,
                                ID1 = ID1,
                                ID2 = ID2,
                                ID3 = ID3,
                                ID4 = ID4,
                                Msg = Classes.Language.Sklad.Language.msg96 //"Помечено на удаление, так как запись задействована в других объектах сервиса (напр. в документах)."
                            };
                            return(Ok(returnServer.Return(true, collectionWrapper)));
                        }
                        else
                        {
                            return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
                        }
                    }
                }
                else
                {
                    // === Снимаем пометку на удаление === === === === ===

                    dirServiceJobNomen.Del = false;

                    db.Entry(dirServiceJobNomen).State = EntityState.Modified;
                    await db.SaveChangesAsync();

                    dynamic collectionWrapper = new
                    {
                        ID  = dirServiceJobNomen.DirServiceJobNomenID,
                        ID0 = ID0,
                        ID1 = ID1,
                        ID2 = ID2,
                        ID3 = ID3,
                        ID4 = ID4,
                        Msg = Classes.Language.Sklad.Language.msg97           //"Пометка на удаление снята."
                    };
                    return(Ok(returnServer.Return(true, collectionWrapper))); //return Ok(returnServer.Return(true, ""));
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }

            #endregion
        }
コード例 #2
0
        public async Task <IHttpActionResult> PostDirServiceJobNomen(DirServiceJobNomen dirServiceJobNomen)
        {
            #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

            //Получаем Куку
            System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

            // Проверяем Логин и Пароль
            Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

            if (!field.Access)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
            }

            //Изменяем строку соединения
            db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

            //Права (1 - Write, 2 - Read, 3 - No Access)
            int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirServiceJobNomens"));

            if (iRight != 1)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
            }

            //Разные Функции
            function.NumberDecimalSeparator();

            //Получам настройки
            Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

            #endregion

            #region Проверки

            if (!ModelState.IsValid)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg91)));                     //return BadRequest(ModelState);
            }
            //Подстановки - некоторые поля надо заполнить, если они не заполены
            dirServiceJobNomen.Substitute();

            #endregion


            #region Сохранение

            try
            {
                //Используем метод, что бы было всё в одном потоке
                db.Entry(dirServiceJobNomen).State = EntityState.Added;
                await Task.Run(() => db.SaveChangesAsync());


                #region 6. JourDisp *** *** *** *** *** *** *** *** *** *

                Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp();
                sysJourDisp.DirDispOperationID = 4; //Добавление записи
                sysJourDisp.DirEmployeeID      = field.DirEmployeeID;
                sysJourDisp.ListObjectID       = ListObjectID;
                sysJourDisp.TableFieldID       = dirServiceJobNomen.DirServiceJobNomenID;
                sysJourDisp.Description        = "";
                try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { }

                #endregion


                //Получаем Sub-бы (нужны поледние 5-ть)
                ArrayList Subs = await Task.Run(() => DirServiceJobNomenSubFind(dirServiceJobNomen.Sub));

                int ID0 = 0, ID1 = 0, ID2 = 0, ID3 = 0, ID4 = 0;
                if (Subs.Count > 0)
                {
                    if (Subs.Count > 0)
                    {
                        ID0 = Convert.ToInt32(Subs[0]);
                    }
                    if (Subs.Count > 1)
                    {
                        ID1 = Convert.ToInt32(Subs[1]);
                    }
                    if (Subs.Count > 2)
                    {
                        ID2 = Convert.ToInt32(Subs[2]);
                    }
                    if (Subs.Count > 3)
                    {
                        ID3 = Convert.ToInt32(Subs[3]);
                    }
                    if (Subs.Count > 4)
                    {
                        ID4 = Convert.ToInt32(Subs[4]);
                    }
                }

                dynamic collectionWrapper = new
                {
                    ID  = dirServiceJobNomen.DirServiceJobNomenID,
                    ID0 = ID0,
                    ID1 = ID1,
                    ID2 = ID2,
                    ID3 = ID3,
                    ID4 = ID4,
                };
                return(Ok(returnServer.Return(true, collectionWrapper)));
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }

            #endregion
        }