public static List <POCO.record> GetDoubles(int dossierId, int importRecordTmpId)
        {
            var list = new List <POCO.record>();

            PersonalFinancesDBEntities db  = new PersonalFinancesDBEntities();
            importRecordTmp            irt = db.importRecordTmps.Find(importRecordTmpId);


            list = (from rec in db.sp_getListDuplicates(irt.dossierId,
                                                        irt.revenue,
                                                        irt.expense,
                                                        irt.date,
                                                        irt.description,
                                                        irt.comment)
                    select new POCO.record
            {
                dossierId = rec.dossierId,
                description = rec.description,
                comment = rec.comment,
                date = rec.date,
                revenue = rec.revenue,
                expense = rec.expense,
                CategoryDescription = rec.category,
                SubcategoryDescription = rec.subcategory
            }).ToList();


            return(list);
        }
        public static void Delete(int dossierId, int importRecordTmpId)
        {
            PersonalFinancesDBEntities db = new PersonalFinancesDBEntities();

            importRecordTmp irt = db.importRecordTmps.Where(i => i.dossierId == dossierId && i.importRecordTmpId == importRecordTmpId).Single();

            db.importRecordTmps.Remove(irt);
            db.SaveChanges();
        }
        private ExtractionResult ProcessList(List <List <DataRow> > inputList)
        {
            var _result = new ExtractionResult();

            _result.TotalProcessedRecords = inputList.Count();

            var list = new List <importRecordTmp>();

            foreach (var listDR in inputList)
            {
                //Skipping the header
                for (int i = 1; i < listDR.Count(); i++)
                {
                    //Checking if it is an empty line
                    if (string.IsNullOrEmpty(listDR[i][(int)RecordField.Date].ToString()))
                    {
                        break;
                    }

                    decimal expense    = 0;
                    var     ValidValue = decimal.TryParse(listDR[i][(int)RecordField.Expense].ToString(), out expense);

                    decimal revenue = 0;
                    if (ValidValue)
                    {
                        ValidValue = decimal.TryParse(listDR[i][(int)RecordField.Revenue].ToString(), out revenue);
                    }

                    DateTime date = new DateTime();
                    if (ValidValue)
                    {
                        ValidValue = DateTime.TryParse(listDR[i][(int)RecordField.Date].ToString(), out date);
                    }

                    var record = new importRecordTmp
                    {
                        description = listDR[i][(int)RecordField.Description].ToString(),
                        category    = listDR[i][(int)RecordField.Category].ToString(),
                        subcategory = listDR[i][(int)RecordField.Subcategory].ToString(),
                        expense     = expense,
                        revenue     = revenue,
                        comment     = listDR[i][(int)RecordField.Comment].ToString(),
                        date        = date,
                        importError = !ValidValue
                    };

                    list.Add(record);
                }
            }

            _result.TotalDiscardedRecord = list.Where(p => p.importError == true).Select(p => p).ToList().Count();
            _result.ValidRecords         = list.Where(i => !i.importError).ToList();

            return(_result);
        }
        private bool ProcessRecordline(string line,
                                       out importRecordTmp importRecordTmp)
        {
            importRecordTmp = new importRecordTmp();
            String[] RecordLine = line.Split(_separator);

            if (RecordLine.Count() != 7)
            {
                //TODO: report error to USER
                _failedImports++;
                return(false);
            }

            string [] dateTmp = RecordLine[(int)RecordField.Date].Split('/');

            if (dateTmp.Count() != 3)
            {
                //TODO: report error to USER
                _failedImports++;
                return(false);
            }

            importRecordTmp.date = new DateTime(year: Int32.Parse(dateTmp[(int)DateField.year]),
                                                month: Int32.Parse(dateTmp[(int)DateField.month]),
                                                day: Int32.Parse(dateTmp[(int)DateField.day]));

            importRecordTmp.description = RecordLine[(int)RecordField.Description];

            //string numTmp = RecordLine[(int)RecordField.Amount].Replace(',', '.');
            //importRecordTmp.expense = decimal.Parse(numTmp);

            importRecordTmp.expense = decimal.Parse(RecordLine[(int)RecordField.Expense]);
            importRecordTmp.revenue = decimal.Parse(RecordLine[(int)RecordField.Revenue]);

            if (importRecordTmp.expense > 0 &&
                importRecordTmp.revenue > 0)
            {
                _failedImports++;
                return(false);
            }

            importRecordTmp.category    = RecordLine[(int)RecordField.Category];
            importRecordTmp.subcategory = RecordLine[(int)RecordField.Subcategory];
            importRecordTmp.dossierId   = _dossierId;

            return(true);
        }