Example #1
0
        private async void PhonebookUpdateRecordGBtn_Clicked(object sender, EventArgs e)
        {
            try
            {
                Log.Debug(Globals.LogTag, "Pb update record call start");
                PhonebookRecord pbRec = await pb.ReadPhonebookRecord(PhonebookType.Usim, 1);

                Log.Debug(Globals.LogTag, "Read record Index: " + pbRec.Index);
                Log.Debug(Globals.LogTag, "Read record Name: " + pbRec.Name);
                Log.Debug(Globals.LogTag, "Read record Number: " + pbRec.Number);
                PhonebookRecord rec = new PhonebookRecord();
                rec.Type   = PhonebookType.Usim;
                rec.Index  = 1;
                rec.Name   = "NewName";
                rec.Number = "999999";
                bool b = await pb.UpdatePhonebookRecord(rec);

                if (b)
                {
                    Log.Debug(Globals.LogTag, "Pb record updated successfully");
                }

                PhonebookRecord pbUpdt = await pb.ReadPhonebookRecord(PhonebookType.Usim, rec.Index);

                Log.Debug(Globals.LogTag, "Updated record Name: " + pbUpdt.Name);
                Log.Debug(Globals.LogTag, "Updated record Number: " + pbUpdt.Number);
                Log.Debug(Globals.LogTag, "Updated update record call success");
            }

            catch (Exception ex)
            {
                Log.Debug(Globals.LogTag, "Pb update record exception: " + ex.ToString());
            }
        }
Example #2
0
        private async void PhonebookReadRecordGBtn_Clicked(object sender, EventArgs e)
        {
            try
            {
                Log.Debug(Globals.LogTag, "Pb read record call start");
                PhonebookRecord pbRec = await pb.ReadPhonebookRecord(PhonebookType.Usim, 1);

                Log.Debug(Globals.LogTag, "Type: " + pbRec.Type);
                Log.Debug(Globals.LogTag, "Index: " + pbRec.Index);
                Log.Debug(Globals.LogTag, "NextIndex: " + pbRec.NextIndex);
                Log.Debug(Globals.LogTag, "Name: " + pbRec.Name);
                Log.Debug(Globals.LogTag, "Dcs: " + pbRec.Dcs);
                Log.Debug(Globals.LogTag, "Number: " + pbRec.Number);
                Log.Debug(Globals.LogTag, "Ton: " + pbRec.Ton);
                Log.Debug(Globals.LogTag, "Anr1: " + pbRec.Anr1);
                Log.Debug(Globals.LogTag, "Anr1Ton: " + pbRec.Anr1Ton);
                Log.Debug(Globals.LogTag, "Anr2: " + pbRec.Anr2);
                Log.Debug(Globals.LogTag, "Anr2Ton: " + pbRec.Anr2Ton);
                Log.Debug(Globals.LogTag, "Anr3: " + pbRec.Anr3);
                Log.Debug(Globals.LogTag, "Anr3Ton: " + pbRec.Anr3Ton);
                Log.Debug(Globals.LogTag, "Email1: " + pbRec.Email1);
                Log.Debug(Globals.LogTag, "Email2: " + pbRec.Email2);
                Log.Debug(Globals.LogTag, "Email3: " + pbRec.Email3);
                Log.Debug(Globals.LogTag, "Email4: " + pbRec.Email4);
                Log.Debug(Globals.LogTag, "Group index: " + pbRec.GroupIndex);
                Log.Debug(Globals.LogTag, "Pbcontrol: " + pbRec.PbControl);

                Log.Debug(Globals.LogTag, "Pb read record call success");
            }

            catch (Exception ex)
            {
                Log.Debug(Globals.LogTag, "Pb read record exception: " + ex.ToString());
            }
        }
Example #3
0
        public async Task <int> SaveAsync(PhonebookRecord model)
        {
            var isNew = model.Id == 0;

            return(await WithConnection(async c =>
            {
                model.Id = await c.QueryFirstAsync <int>(
                    isNew ? SQL.InsertPerson : SQL.UpdatePerson,
                    new
                {
                    Id = model.Id,
                    Name = model.Name,
                    Surname = model.Surname,
                    Patronymic = model.Patronymic
                }).ConfigureAwait(false);

                if (!isNew)
                {
                    await c.ExecuteAsync(
                        SQL.DeletePhoneNumbersByPersonId,
                        new { PersonId = model.Id }).ConfigureAwait(false);
                }

                await c.ExecuteAsync(
                    SQL.InsertPhoneNumbers,
                    model.PhoneNumbers.Select(x => new
                {
                    PersonId = model.Id,
                    PhoneNumber = x
                }).ToList()).ConfigureAwait(false);

                return model.Id;
            }));
        }
Example #4
0
 public static PhonebookRecordClientData MapToClientData(PhonebookRecord model)
 {
     return(new PhonebookRecordClientData
     {
         Id = model.Id,
         FullName = GetFullName(model),
         PhoneNumbers = model.PhoneNumbers?.Select(GetFormattedPhoneNumber).ToList()
                        ?? new List <string>()
     });
 }
        public void MapToClientData_IfElevenDigits_MobilePhone()
        {
            var model = new PhonebookRecord
            {
                PhoneNumbers = new List <string> {
                    "81234567890"
                }
            };

            var actual = PhonebookRecordMapper.MapToClientData(model);

            Assert.AreEqual("8-123-456-78-90", actual.PhoneNumbers.FirstOrDefault());
        }
        public void MapToClientData_IfSixDigits_CityPhone()
        {
            var model = new PhonebookRecord
            {
                PhoneNumbers = new List <string> {
                    "123456"
                }
            };

            var actual = PhonebookRecordMapper.MapToClientData(model);

            Assert.AreEqual("12-34-56", actual.PhoneNumbers.FirstOrDefault());
        }
        public void MapToClientData_IfAllNames_ThreeWords()
        {
            var model = new PhonebookRecord
            {
                Name       = "Сара",
                Patronymic = "Джессика",
                Surname    = "Паркер"
            };

            var actual = PhonebookRecordMapper.MapToClientData(model);

            Assert.AreEqual("Сара Джессика Паркер", actual.FullName);
        }
Example #8
0
        private phonebook PhonebookRecordToEntity(PhonebookRecord phonebookItem)
        {
            phonebook entityPhonebookItem = new phonebook()
            {
                company = phonebookItem.Company.Trim(),
                number  = phonebookItem.Number.Trim()
                          //TODO next properties
                          //phone_type = phonebookItem.PhoneType,
                          //description = phonebookItem.Description
            };

            return(entityPhonebookItem);
        }
Example #9
0
        private PhonebookRecord PhonebookEntityTpRecord(phonebook phonebookEntity)
        {
            PhonebookRecord phonebookItem = new PhonebookRecord()
            {
                Company = phonebookEntity.company,
                Number  = phonebookEntity.number
                          //TODO next properties
                          //PhoneType = phonebookEntity.phone_type,
                          //Description = phonebookEntity.description
            };

            return(phonebookItem);
        }
Example #10
0
        private static string GetFullName(PhonebookRecord model)
        {
            if (!string.IsNullOrEmpty(model.Patronymic))
            {
                return($"{model.Name} {model.Patronymic} {model.Surname}");
            }

            if (!string.IsNullOrEmpty(model.Name))
            {
                return($"{model.Name} {model.Surname}");
            }

            return($"{model.Surname}");
        }
Example #11
0
        private void ImportContacts()
        {
            int rowNumber = 1;
            List <PhonebookRecord> records           = new List <PhonebookRecord>();
            ImportRecordsResponse  response          = null;
            StringBuilder          responseMessageSB = new StringBuilder();

            foreach (DataRow row in _dataTable.Rows)
            {
                PhonebookRecord record = new PhonebookRecord()
                {
                    RecordId = rowNumber++,
                    Company  = (string)row[AssignComboColumns[_assignedNameColumnIndex]],
                    Number   = (string)row[AssignComboColumns[_assignedNumberColumnIndex]]
                };
                records.Add(record);
            }

            try
            {
                response = service.ImportContacts(records.ToArray());
                responseMessageSB.AppendFormat("Počet úspěšně importovaných záznamů: {0}",
                                               response.SuccessRecordsCount);
            }
            catch (FaultException <ImportRecordsResponseError> ex)
            {
                responseMessageSB.AppendFormat
                    ("Počet úspěšně importovaných záznamů: {0}\n\n", ex.Detail.SuccessRecordsCount);
                responseMessageSB.AppendFormat
                    ("Počet záznamů, které se nepodařilo importovat: {0}\n\n", ex.Detail.ErrorRecordsCount);
                responseMessageSB.Append("Seznam chyb v importním souboru::\n");
                foreach (ImportRecordResponseError importError in ex.Detail.ImportErrors)
                {
                    responseMessageSB.AppendFormat(
                        "Řádek: {0}\t\tSloupec: {1}\t\tChyba: {2}\n",
                        importError.RecordId.Value.ToString("00"),
                        importError.ColumnId.Value.ToString("00"),
                        importError.ErrorType.ToString());
                }
            }
            catch (CommunicationException ex)
            {
                responseMessageSB.AppendFormat("Komunikace se službou se bohužel nezdařila. \n\n{0}\n{1}",
                                               //ex.Message, (ex.InnerException != null) ? ex.InnerException.Message : null);
                                               ex.Message, ex.InnerException?.Message);
            }
            catch (DataException ex)
            {
                responseMessageSB.AppendFormat("Bohužel došlo k chybě služby při práci s databází. \n\n{0}\n{1}",
                                               ex.Message, ex.InnerException?.Message);
            }
            catch (Exception ex)
            {
                responseMessageSB.AppendFormat("Bohužel došlo k chybě v programu. \n\n{0}\n{1}",
                                               ex.Message, ex.InnerException?.Message);
            }
            finally
            {
                ResponseMessage = responseMessageSB.ToString();
            }
        }
Example #12
0
        private ImportRecordResponse ImportContact(PhonebookRecord record, bool batchMode)
        {
            if (!batchMode)
            {
                numbers = GetContactsPhoneNumbers();
            }

            ImportRecordResponse      response      = new ImportRecordResponse();
            ImportRecordResponseError errorResponse = new ImportRecordResponseError();

            #region Validate
            if (String.IsNullOrEmpty(record.Company))
            {
                errorResponse.Description = "Jméno musí být uvedeno";
                errorResponse.RecordId    = record.RecordId;
                errorResponse.ErrorType   = ImportErrorType.Required;
                errorResponse.ColumnId    = 0;
                hostLogger?.Error("Error: 'Name' required [recordId:" + record.RecordId + "]");
                throw new FaultException <ImportRecordResponseError>(errorResponse, commonErrorMessage);
            }

            if (String.IsNullOrEmpty(record.Number))
            {
                errorResponse.Description = "Tel.číslo musí být uvedeno";
                errorResponse.RecordId    = record.RecordId;
                errorResponse.ErrorType   = ImportErrorType.Required;
                errorResponse.ColumnId    = 1;
                hostLogger?.Error("Error: 'Number' required [recordId:" + record.RecordId + "]");
                throw new FaultException <ImportRecordResponseError>(errorResponse, commonErrorMessage);
            }

            if (numbers != null && numbers.Count > 0)
            {
                // TODO iteligentnejsi kontrola, napr. i varianty zacinajici na '+narodnikod' atd
                // Dalsi moznost je nastaveni indexu bez duplicit na sloupci number v phonebook
                // a odchytit exception pri db.Save. Toto by bylo rychlejsi a jednodussi, ale nebylo
                // by mozne resit duplicity importu zapisu cisel v ruznem formatu...
                // Ale je mozne, ze toto je uz nejak reseno na urovni pripravy importniho CSV
                // protoze v ukazkach byla jen cisla bez mezinarodniho predcisli. Pak by bylo
                // lepsi zvolit variantu hlidani duplicit na urovni SQL
                if (numbers.Contains(record.Number.Trim()))
                {
                    errorResponse.Description = "Tel.číslo již v seznamu existuje";
                    errorResponse.RecordId    = record.RecordId;
                    errorResponse.ErrorType   = ImportErrorType.DuplicateNumber;
                    errorResponse.ColumnId    = 1; // TODO na string jmeno
                    hostLogger?.Error("Error: 'Number' duplicated [recordId:" + record.RecordId + "]");
                    throw new FaultException <ImportRecordResponseError>(errorResponse, commonErrorMessage);
                }
            }
            #endregion

            phonebook phonebookEntity = PhonebookRecordToEntity(record);
            try
            {
                db.phonebook.Add(phonebookEntity);
                if (!batchMode)
                {
                    db.SaveChanges();
                }
                response.Success = true;
            }
            catch (Exception e)
            {
                errorResponse.RecordId    = record.RecordId;
                errorResponse.ErrorType   = ImportErrorType.Unknown;
                errorResponse.Description = e.Message;
                throw new FaultException <ImportRecordResponseError>(errorResponse, commonErrorMessage);
            }
            return(response);
        }
Example #13
0
 /// <summary>
 /// Metoda uloží položku do databáze
 /// </summary>
 public ImportRecordResponse ImportContact(PhonebookRecord record)
 {
     return(ImportContact(record, false));
 }