public ResidentItem SaveResident(ResidentItem residentItem)
        {
            Resident resident = null;

            switch (residentItem.InitializationType)
            {
            case InitializationTypes.Insert:
                resident = new Resident
                {
                    FirstName           = residentItem.FirstName,
                    LastName            = residentItem.LastName,
                    MiddleName          = residentItem.MiddleName,
                    IdentificatorNumber = residentItem.IdentificatorNumber,
                    GenderID            = residentItem.GenderID,
                    RegionID            = residentItem.RegionID,
                    CommunityID         = residentItem.CommunityID,
                    Street    = residentItem.Street,
                    Building  = residentItem.Building,
                    Home      = residentItem.Home,
                    BirthYear = residentItem.BirthYear,
                    Phone     = residentItem.Phone,
                    Email     = residentItem.Email
                };
                if (residentItem.BirthYear != null)
                {
                    resident.BirthDate = new DateTime((Int16)residentItem.BirthYear, 1, 1);
                }
                db.Residents.Add(resident);
                break;

            case InitializationTypes.Update:
                resident = new Resident
                {
                    ResidentID          = residentItem.ResidentID,
                    FirstName           = residentItem.FirstName,
                    LastName            = residentItem.LastName,
                    MiddleName          = residentItem.MiddleName,
                    IdentificatorNumber = residentItem.IdentificatorNumber,
                    GenderID            = residentItem.GenderID,
                    RegionID            = residentItem.RegionID,
                    CommunityID         = residentItem.CommunityID,
                    Street    = residentItem.Street,
                    Building  = residentItem.Building,
                    Home      = residentItem.Home,
                    BirthYear = residentItem.BirthYear,
                    Phone     = residentItem.Phone,
                    Email     = residentItem.Email
                };
                if (residentItem.BirthYear != null)
                {
                    resident.BirthDate = new DateTime((Int16)residentItem.BirthYear, 1, 1);
                }
                db.Residents.Attach(resident);
                db.Entry(resident).State = EntityState.Modified;
                break;
            }
            db.SaveChanges();
            residentItem.ResidentID = resident.ResidentID;
            return(residentItem);
        }
        /// <summary>
        /// Get existing temporary Resident and return it as a result
        /// </summary>
        /// <returns></returns>
        public ResidentItem GetResidentItem(int?residentID = null)
        {
            try
            {
                if (residentID != null)
                {
                    Resident     resident = db.Residents.Find(residentID);
                    ResidentItem item     = new ResidentItem
                    {
                        ResidentID          = resident.ResidentID,
                        FirstName           = resident.FirstName,
                        LastName            = resident.LastName,
                        MiddleName          = resident.MiddleName,
                        BirthDate           = resident.BirthDate,
                        IdentificatorNumber = resident.IdentificatorNumber,
                        GenderID            = resident.GenderID,
                        RegionID            = resident.RegionID,
                        CommunityID         = resident.CommunityID,
                        Street    = resident.Street,
                        Building  = resident.Building,
                        Home      = resident.Home,
                        BirthYear = resident.BirthYear,
                        Phone     = resident.Phone,
                        Email     = resident.Email,

                        InitializationType = InitializationTypes.Update,
                    };
                    return(item);
                }
                else
                {
                    var item = new ResidentItem
                    {
                        InitializationType = InitializationTypes.Insert,
                    };
                    return(item);
                }
            }
            catch (Exception ex)
            {
                exception = ex;
                return(null);
            }
        }