Пример #1
0
        public async Task <ResultCrmDb> RegisterUserAsync(RegistrationUserArgs args)
        {
            var           result     = new ResultCrmDb();
            var           errors     = 0;
            List <string> textErrors = new List <string>();

            try
            {
                if (string.IsNullOrWhiteSpace(args.Account))
                {
                    textErrors.Add("аккаунт пользователя не указан");
                    errors++;
                }
                if (string.IsNullOrWhiteSpace(args.Name))
                {
                    textErrors.Add("имя пользователя не указано");
                    errors++;
                }
                if (errors > 0)
                {
                    throw new Exception();
                }
                var countUser = await _crmDbContext.User.CountAsync(c => c.Account.ToLower() == args.Account.ToLower());

                if (countUser > 0)
                {
                    textErrors.Add("пользователь с таким логином уже существует");
                    errors++;
                }
                var user = new User();
                user.Account    = args.Account;
                user.Email      = args.Email;
                user.Phone      = args.Phone;
                user.Name       = args.Name;
                user.Surname    = args.Surname;
                user.Middlename = args.Middlename;
                await _crmDbContext.user.AddAsync(user);

                await _crmDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                var err = "";

                if (errors > 0)
                {
                    err = string.Join(",\n", textErrors.ToArray());
                }
                else
                {
                    err = e.Message;
                }
                var patternError = $"Ошибка регистрации пользователя:\n {err}.";
                result.AddError("", $"{patternError}");
            }
            return(result);
        }
Пример #2
0
        public static async Task <s_org> AddOrg(this DohodDbContext dbContext, string inn, string kpp, string name, string rs)
        {
            // Внести изменение в пополнение справочника Плательщики. 20150406
            // Если плательщиком является организация(банк) с реквизитами ИНН и КПП юр.лица,
            // а в наименовании плательщика дополнительно(//.....) указывается ФИО физ.лица,
            // то в справочник Плательщики в наименовании записывать имя без дополнительных реквизитов
            var nameForDictionary = name;

            if (inn.Length == 10 && kpp.Length == 9)
            {
                nameForDictionary = name.Split("//")[0];
            }
            var typePlat = inn.Length == 10 ? 1 :2;
            var org      = new s_org()
            {
                Inn       = inn,
                Kpp       = kpp,
                Name      = nameForDictionary,
                FullName  = nameForDictionary,
                TypeOrg   = 0,
                AdresJure = "", // в фоксе при импорте не записывались
                AdresFakt = ""  // в фоксе при импорте не записывались
            };
            var res = await dbContext.s_org.AddAsync(org);

            await dbContext.SaveChangesAsync(); // тест

            org.Sysid = res.Entity.Sysid;

            if (!string.IsNullOrWhiteSpace(rs))
            {
                var schet = new s_schet()
                {
                    OrgId  = org.Sysid,
                    BankId = null, // в фоксе банки не записывались
                    Rs     = rs
                };
                await dbContext.s_schet.AddAsync(schet);

                await dbContext.SaveChangesAsync();
            }
            return(org);
        }
Пример #3
0
        public async Task <ResultCrmDb> AddRoleForLevelOrgAsync(RoleCreateArgs args)
        {
            var result = new ResultCrmDb();

            try
            {
                var role = new userrole();
                role.LevelOrgId = args.IdLevelorg;
                role.Name       = args.CaptionRole;
                role.Sysname    = args.CaptionRole;
                await _crmDbContext.userrole.AddAsync(role);

                await _crmDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                result.AddError("", e.Message);
            }
            return(result);
        }
Пример #4
0
        public async Task WriteImportedData(List <t_dohod> dohods)
        {
            // Пусть так пока
            foreach (var doh in dohods.Where(x => x.Sysid > 0))
            {
                var xx = _dohodDbContext.t_dohod.Local.FirstOrDefault(x => x.Sysid == doh.Sysid);
                if (xx != null)
                {
                    _dohodDbContext.Entry(xx).State = EntityState.Detached;
                }
            }
            //foreach (var dohod in dohods.Where(x => x.Sysid == 0))
            //{
            //    var res = await _dohodDbContext.t_dohod.AddAsync(dohod);
            //    dohod.Orig.Dohod = res.Entity;
            //    await _dohodDbContext.t_dohorig.AddAsync(dohod.Orig);
            //}

            _dohodDbContext.t_dohod.AddRange(dohods.Where(x => x.Sysid == 0));
            _dohodDbContext.UpdateRange(dohods.Where(x => x.Sysid > 0));

            await _dohodDbContext.SaveChangesAsync();
        }
Пример #5
0
        public static async Task <t_uvdet> IdentUved(this DohodDbContext dbContext, t_dohod dohod, ImportParam importParam, bool isUvDocMarking = true)
        {
            // пытаемся определить плательщика, через уведомление
            var uvdets = await dbContext.t_uvdet.AsNoTracking()
                         .Where(w => w.Uv.DateUv == dohod.DatePp &&
                                w.Uv.NomUv == dohod.NumPp &&
                                w.Kbk == dohod.Orig.Kbk &&
                                Math.Abs(w.Summa) == Math.Abs(dohod.SumItg))
                         .ToListAsync();

            // Как быстрее ??
            //var query = await _dohodDbContext.t_uvdet.Where(w=>w.Kbk == dohod.Orig.Kbk && w.Summa == dohod.SumItg)
            //            .Join(_dohodDbContext.t_uv.Where(w=>w.DateUv == dohod.DatePp && w.NomUv == dohod.NumPp), x=>x.UvId, y=>y.Sysid, (x,y)=>x.UvId)
            //            .ToListAsync();

            if (uvdets.Count == 1)
            {
                var uvdet0 = uvdets[0]; // Это может быть как NevPost так и !NevPost
                                        // плательщика берем из уведомления и для VT и для SF, но там его id пока нет
                var uvdetnp = await dbContext.t_uvdet.AsNoTracking()
                              .Where(w => w.Uv.Sysid == uvdet0.UvId && (w.IsNp ?? false))
                              .FirstOrDefaultAsync();

                if (uvdetnp != null && dohod.Sysid != 0)
                {
                    var org = await dbContext.IdentPlat(uvdetnp.PlatInn, uvdetnp.PlatKpp, uvdetnp.PlatName, "");

                    if (org != null)
                    {
                        // ---Запись в t_dohod -----
                        dohod.PlatId        = org.Sysid;
                        dohod.Orig.Inn      = org.Inn;
                        dohod.Orig.Kpp      = org.Kpp;
                        dohod.Orig.PlatName = org.Name;
                        dohod.LinkNp        = uvdetnp.UvId;
                    }
                }
                if (isUvDocMarking)
                {
                    // ---Запись в t_uvdet -----
                    uvdet0.DateVyp = dohod.Date;
                    dbContext.t_uvdet.Update(uvdet0);
                }
                await dbContext.SaveChangesAsync();

                return(uvdet0);
            }
            return(null);
        }
Пример #6
0
        public async Task <ResultCrmDb> AddAsync(LevelOrgAddArgs args)
        {
            var result = new ResultCrmDb();
            var toAdd  = new t_levelorg();

            try
            {
                var l = _crmDbContext.t_levelorg.Count();
                toAdd = args;
                if (toAdd.Parent == null || toAdd.Parent == 0)
                {
                    if (await _crmDbContext.t_levelorg.FirstOrDefaultAsync(f => f.Parent == null || f.Parent == 0) != null)
                    {
                        throw new Exception("Не возможно иметь 2 основных уровня levelorg");
                    }
                    else
                    {
                        if (_crmDbContext.t_levelorg.Count() != 0)
                        {
                            if (await _crmDbContext.t_levelorg.FirstOrDefaultAsync(f => toAdd.Parent.ToString() == f.Sysid.ToString()) == null)
                            {
                                throw new Exception("Не существует родительской записи для levelorg");
                            }
                        }
                    }
                }
                await _crmDbContext.t_levelorg.AddAsync(toAdd);

                await _crmDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                result.AddError("", e.Message);
            }
            return(result);
        }
Пример #7
0
        public static async Task <s_kceli> AddKceli(this DohodDbContext dbContext, string codeceli)
        {
            var kceli = new s_kceli()
            {
                CodeCeli = codeceli,
                DateBeg  = null,
                Name     = $"Добавлено при импорте {DateTime.Now:dd.MM.yyyy}",
                FullName = $"Добавлено при импорте {DateTime.Now}",
            };

            var res = await dbContext.s_kceli.AddAsync(kceli);

            await dbContext.SaveChangesAsync();

            kceli.Sysid = res.Entity.Sysid;
            return(kceli);
        }
Пример #8
0
        protected async Task DeleteTheFileData(ImportParam importParam)
        {
            var filerecords = _dohodDbContext.t_dohod.Where(x => x.ImportFile == importParam.FileName);

            _previewdata.recsDel = filerecords.Count();
            if (_previewdata.recsDel == 0)
            {
                return;
            }

            _dohodDbContext.t_dohod.RemoveRange(filerecords);
            await _dohodDbContext.SaveChangesAsync();

            // или ??
            //_dohodDbContext.Database.GetDbConnection()
            //               .ExecuteScalar($"DELETE FROM t_dohod where ImportFile = '{importParam.FileName}';");
        }
Пример #9
0
        public static async Task <s_kbk> AddKbk(this DohodDbContext dbContext, string kbkcode)
        {
            var kbk = new s_kbk()
            {
                Kbk       = kbkcode,
                OktmoId   = null,
                DateBeg   = null,
                DateEnd   = null,
                ProcFed   = 100.0,
                Name      = $"Добавлено при импорте {DateTime.Now:dd.MM.yyyy}",
                FullName  = $"Добавлено при импорте {DateTime.Now}",
                IsPriznak = false
            };
            var res = await dbContext.s_kbk.AddAsync(kbk);

            await dbContext.SaveChangesAsync();

            kbk.Sysid = res.Entity.Sysid;

            return(kbk);
        }
Пример #10
0
        public async Task <ResultCrmDb> EditAccessAsync(int idRole, int[] selected)
        {
            var result = new ResultCrmDb();

            try
            {
                List <AccessForm> access = new List <AccessForm>();
                _crmDbContext.accessForm.RemoveRange(_crmDbContext.accessForm.Where(x => x.UserRoleId == idRole & x.FormModelId != null));
                foreach (var idMode in selected)
                {
                    access.Add(new AccessForm {
                        FormModelId = idMode, UserRoleId = idRole
                    });
                }
                await _crmDbContext.accessForm.AddRangeAsync(access);

                await _crmDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                result.AddError("", e.Message);
            }
            return(result);
        }
Пример #11
0
        public async Task WriteCalendar(List <ExpandoObject> lst)
        {
            _dohodDbContext.TruncateDbTable(typeof(s_calendar).Name);

            foreach (dynamic obj in lst)
            {
                var calendar = new s_calendar();

                calendar.Sysid       = (int)obj.SYSID;
                calendar.Date        = obj.DATE;
                calendar.IsWeekend   = obj.SUNDAY;
                calendar.IsNoPostDay = obj.NOPOST;
                calendar.Summa       = (decimal)(obj.SUMMA ?? 0.0M);
                calendar.SummaZf     = (decimal)(obj.SUM_ZF ?? 0.0M);
                calendar.SummaIp     = (decimal)(obj.SUM_IP ?? 0.0M);
                calendar.SummaReestr = (decimal)(obj.SUM_REESTR ?? 0.0M);

                FillAppEditFields(obj, calendar);
                await _dohodDbContext.s_calendar.AddAsync(calendar);
            }
            await _dohodDbContext.SaveChangesAsync();
        }